Alexey
такие у неё выразительные глаза) размер 3...
Igor
{{ hostvars['inventory_instance_name']['ansible_default_ipv4.address'] }}
Пытаюсь использовать в шаблоне:
"start_join": ["{{ hostvars['server1']['ansible_default_ipv4.address'] }}","{{ hostvars['server2']['ansible_default_ipv4.address'] }}","{{ hostvars['server3']['ansible_default_ipv4.address'] }}"]
получаю ошибку:
fatal: [server1]: FAILED! => {"changed": false, "failed": true, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute 'ansible_default_ipv4.address'"}
Igor
разобрался
Alexandr
всем привет. подскажите, как лучше подкидывать нужный темплейт? на части серверов есть два интерфейса - eth0 и eth1. на другой - только eth0. в зависимости от этого необхоимо нужный темплейт подкидывать. спасибо
а нужен тот что с интернетом?
Alf 🙀
Alf 🙀
ну а в случае если нужен не дефолт то методом исключения
Alexandr
уже в гугл сходил, спасибо, ребята
Alexandr
все проще оказалось, чем думал
when: ansible_eth1 is defined
Alf 🙀
Alf 🙀
или у вас новые сетевухи броадкомовские приехали
Alexandr
с маршрутизацией всё в порядке и все единобразно. просто в зависимости от того, сколько интерфейсов есть, для софтины нужно подкидывать слегка разные темплейты
Alf 🙀
я наверное повторюсь но что если у вас второй интерфейс не етх1?
Yuri
Alf 🙀
Yuri
для темплейтов, говорит...
Это понятно. Просто вдруг на самом деле человеку нужен интерфейс для того, чтобы вытащить оттуда адрес :) Тогда есть более другое решение
Alexandr
вытащить адрес это уже не проблема)
Alf 🙀
я конечно затупил, если честно в ансибле есть ansible_default_ipv4
Alf 🙀
из фактов
Alf 🙀
ну и там адресс, алиасы и прочее
Alf 🙀
правильнее так, все же
Serge
Yuri
Ну... вытащить надо еще нужный адрес :)
Yuri
Например, dnsmasq должен слушать на всех серых адресах, а на внешнем - нет.
Ilya
Ну надо еще как-то вытаскивать только те у которых тег соответствует
Yuri
{% for host_ip in ansible_all_ipv4_addresses %}
{% if host_ip.startswith("192.168.") %}
listen-address={{ host_ip }}
{% endif %}
{% endfor %}
И нафига не надо вычислять, какой же из интерфейсов присутствует - eth1, agge или enp2s0
Ilya
в ini я что-то видел
Alf 🙀
Alf 🙀
кстати, кто нибудь знает можно ли несколько коллбэк плагинов навесить?
Yuri
Yuri
вернее or
Alf 🙀
Yuri
Тогда непонятен вопрос. Я просто кусок своего конкретного темплейта для одной конкретно взятой задачи привел :)
а существует способ в плейбуке разместить цикл, как это можно сделать в темплейтах j2?
когда неизвестен размер массива
Dmitrii
with_items
так там же конечный список
Dmitrii
Что значит размер массива неизвестен?
Dmitrii
У массива всегда есть размер
да, и всегда неизвестен заранее
Dmitrii
Шта
чуть более конкретизирую
Dmitrii
Какие то гуманитарные термины
я хочу в плейбуке прогнать айпишники определенной хостгруппы, размещенной в инвентори
Dmitrii
Ну получаешь все ноды из группы (как источник в цикл) а обращаешься к каждому хосту через hostvars[item][...]
Dmitrii
Внутри цикла
Dmitrii
{% for item in groups['group_name'] %}
{{ hostvars[item]['property'] }}
{% endfor %}
Dmitrii
Я думаю, тоже самое через set_fact можно сделать используя функциональный подход.
Dmitrii
Но вообще это все пиздец.
Dmitrii
Я просто делал свой with_items фильтр и херачил на питоне все что мне надо было
Bogdan (SirEdvin)
да, и всегда неизвестен заранее
with_items нужен только массив, какой именно длинны плевать. Если сможешь запихнуть в переменную массив и передать туда - ты красавчик и проблема решена.
Bogdan (SirEdvin)
Массив то всегда конечен
имелось ввиду - на момент старта плейбука неизвестно сколько будет в массиве элементов
Elinka22
http://docs.ansible.com/ansible/playbooks_filters_ipaddr.html
Alf 🙀
Elinka22
Ну и пили в таске или шаблоне
if net.ip | ipaddr('private')
Alibek
Всем добра!
Хочу вместо:
—-
users:
- username: deploy
comment: "Deploy"
uid: 1500
groups: [ 'www-data' ]
sudoers_nopasswd: false
shell: "/bin/bash"
password: "hAsH"
ssh_key:
- "{{ lookup('file', 'keys/deploy_key.pub') }}"
делать так:
—-
users:
- "{{ lookup('file', 'users/deploy.yml') }}"
Не прокатывает....
Alibek
Оно yaml не интерпретирует:
"users": [
"- username: deploy\n comment: \"Deploy\"\n uid: 1500\n groups: [ 'www-data' ]\n sudoers_nopasswd: false\n shell: \"/bin/bash\"\n password: \"hAsH\"\n ssh_key:\n - \"{{ lookup('file', 'keys/deploy.pub') }}\""
],
Как его убедить?
Alf 🙀
Alf 🙀
Alf 🙀
луукап он читает из файла
Alf 🙀
а у тебя должна таска выполнятся
Alf 🙀
здесь бы инклюд сделать
Alibek
include тоже не проходит:
"users": [
{
"include": "users/deploy.yml"
}
],
и include_vars тоже
Igor
А тут кто-нибудь ansible-vault юзает с хранением переменных ansible_ssh/become_pass в group_vars/group файле, зашифрованного vault'ом?
Alibek
Aleksei
Народ, я тут потихоньку осваивают Ansible, и возник вопрос:
Как получить jid от указанной команды Ansible?
ansible -s -B 3600 -P 0 -a -v "sleep 60" multi
Igor
Alibek
там где допустимы пароли - допустимы и ключи, а там где допустимы ключи - не нужны пароли. ;)
Serge
Igor
Igor
Логиниться под рутом запрещено
Igor
Поэтому только sudp
Igor
Ssh_become_pasd т.е
Igor
Вообщем у меня из group_vars зашифрованного vault'ом в inventoey ssh_become_pass не цепляется