Alexey
такие у неё выразительные глаза) размер 3...
Ilya
прямо ровно по доке
Можно совсем офигеть и получить линк?)
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
разобрался
Ilya
ты же уже попробовал, да?
instance_filters = можно ли использовать переменные окружения?
Alexandr
всем привет. подскажите, как лучше подкидывать нужный темплейт? на части серверов есть два интерфейса - eth0 и eth1. на другой - только eth0. в зависимости от этого необхоимо нужный темплейт подкидывать. спасибо
а нужен тот что с интернетом?
Alf 🙀
ну а в случае если нужен не дефолт то методом исключения
Alexandr
уже в гугл сходил, спасибо, ребята
Alexandr
все проще оказалось, чем думал when: ansible_eth1 is defined
Alf 🙀
все проще оказалось, чем думал when: ansible_eth1 is defined
а если у вас есть eth1 но дефолт все равно не на нем?
Alf 🙀
или у вас новые сетевухи броадкомовские приехали
Alexandr
с маршрутизацией всё в порядке и все единобразно. просто в зависимости от того, сколько интерфейсов есть, для софтины нужно подкидывать слегка разные темплейты
Alf 🙀
я наверное повторюсь но что если у вас второй интерфейс не етх1?
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 🙀
кстати, кто нибудь знает можно ли несколько коллбэк плагинов навесить?
Yuri
а если 172? 10? и вот это вот все...
в чем проблема дописать and?
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)
Массив то всегда конечен
Dmitrii
Массив то всегда конечен
У него видимо особые массивы.
имелось ввиду - на момент старта плейбука неизвестно сколько будет в массиве элементов
Elinka22
а если 172? 10? и вот это вот все...
# {{ test_list | ipaddr('private') }}
Elinka22
http://docs.ansible.com/ansible/playbooks_filters_ipaddr.html
Alf 🙀
# {{ test_list | ipaddr('private') }}
спасибо я в курсе
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 🙀
Ну и пили в таске или шаблоне if net.ip | ipaddr('private')
вы перепутали и не тому отвечаете, видимо...
Elinka22
вы перепутали и не тому отвечаете, видимо...
Да, вероятно... извините, надеюсь автор вопроса читает чат
Alf 🙀
луукап он читает из файла
Alf 🙀
а у тебя должна таска выполнятся
Alf 🙀
здесь бы инклюд сделать
Alibek
include тоже не проходит: "users": [ { "include": "users/deploy.yml" } ], и include_vars тоже
Igor
А тут кто-нибудь ansible-vault юзает с хранением переменных ansible_ssh/become_pass в group_vars/group файле, зашифрованного vault'ом?
Aleksei
Народ, я тут потихоньку осваивают Ansible, и возник вопрос: Как получить jid от указанной команды Ansible? ansible -s -B 3600 -P 0 -a -v "sleep 60" multi
Igor
Предпочитаю ключи или ansible-pull
Ключи не всегда допустимы
Alibek
там где допустимы пароли - допустимы и ключи, а там где допустимы ключи - не нужны пароли. ;)
Igor
Логиниться под рутом запрещено
Igor
Поэтому только sudp
Igor
Ssh_become_pasd т.е
Igor
Вообщем у меня из group_vars зашифрованного vault'ом в inventoey ssh_become_pass не цепляется