Aleksey
новый инвентарь тоже можно. но ансибл как-то некузяво пишет в файлы с нужным форматом. проще локальным скриптом, но это уже не ансибл-вей)
Anastasia
Добрый день! Подскажите, пожалуйста по следующему моменту. Есть темплейт такого вида: {% for host in groups['test_postgres'] %} server {{host}} {{host[ansible_host]}}:6432 maxconn 100 check port 8008 {% endfor %} Очевидно, темплейт нерабочий. Он образуется на хосте, который не включен в группу 'test_postgres'. Что нужно получить: строки вида: server pg01 192.168.0.1:6432 maxconn 100 check port 8008 server pg02 192.168.0.2:6432 maxconn 100 check port 8008 server pg03 192.168.0.3:6432 maxconn 100 check port 8008 , где ip-адреса = ansible_host
Timur
тебе нужна проверка, что текущий хост не входит в группу test_postgres
Не нужно такие проверки делать. Нужно просто запускать таски на правильных хостах
Anastasia
Не очень понятно - в чем именно проблема?
да, действительно. С циклом все хорошо - он берет нужные хосты, но не подставляет айпи-адреса. То есть, я предполагаю, ошибка в {{host[ansible_host]}}:6432
Anastasia
вопрос - как правильно написать эту конструкцию?
Anastasia
hostvars[host]['ansible_host']
спасибо большое!
Timur
Не за что 🙂
Anton
Ребят, а как плейбуком на винде можно удалить и установить сервис? - name: Remove service zabbix win_command: C:\Program Files\Zabbix Agent\bin\win64\zabbix_agentd --uninstall - name: Create a new service zabbix win_command: C:\Program Files\Zabbix Agent\conf\zabbix_agentd.conf --install
Anton
у меня так почемуто пропускает эти степы
Anton
skipping: [app-sh04.simcord.stg]
[IPT] Dmitry
ребят, а есть какое-то решение для удобного массового ansible vault encrypt переменных в конфиге? что-то типа указал какие переменные шифрануть в конфиге, тулза прошла по конфигам и их ключём шифранула? или только их хранить в ansible/hashicorp vault?
Vitaliy
Коллеги, возможно я чего-то не так понимаю. Получил ошибку: ERROR! A recursion loop was detected with the roles specified. Make sure child roles do not have dependencies on parent roles после того как вынес часть кода роли из main.yml и подключил как - import_tasks: install.yml
Vitaliy
точнее в main уже был один - pip, добавил install # pip install - import_tasks: pip.yml when: patroni_installation_method == "pip" tags: patroni, patroni_install, pip # Patroni install - import_tasks: install.yml tags: patroni, patroni_install
Vitaliy
если закомментировать import_tasks: install.yml - работает. в этом блоке кода изменений не было, просто перенёс часть существующего кода в отдельный файл.
Vitaliy
зависимостей вообще нет
Vitaliy
есть стандартные таски с loop-ами
Vitaliy
имеется также copy файла requirements.txt но не думаю то это причина
[IPT] Dmitry
Нету. Но можно своё написать, кода там не очень много потребуется.
да я думаю, стоит ли. наверно лучше в vault нести
Aleksey
судя по тексту ошибки образовалась зацикленность вызовов. смотрите текст. дьявол в деталях
Sergey
да я думаю, стоит ли. наверно лучше в vault нести
Вопросы инженерно-технической целесообразности обычно больно кусают в случае неверных ответов, да :-)
Aleksey
могу код показать? вышлю ссылку
ой. сорри. я реально в дедлайне чаасов на 12. просто сюда пишу от необходимости отвлекаться, иначе вовсе кранты(
Vitaliy
ок, попробую разобраться
Full
Народ, какой сакральный смысл в разделении vars и defaults? Вопрос не про приоритеты переопределения переменных, а про то, зачем их так разделять в рамках одной роли.
Full
Иными словами, это позволяет решить какую-то задачу, или просто "нужно больше мест переопределения переменных"?
Full
А какую? :) Было бы клево какой-нить пример из жизни, или хотя-бы в вакууме. vars перекрываются в инвентори, емнип, и это едва ли не самый частый способ применения.
Sergey
Лично я все дефолты ролей, которые существуют на случай, чтобы роль не "ломалась", кидаю в defaults. А что-то, что из них собирается -выражения и прочее - уже в vars.
Full
Хм. Занятно, спасибо.
Sergey
🙏🏻
Timur
Там очень активно ранжирование переменных используется
Timur
Например: https://github.com/lean-delivery/ansible-role-java
Timur
https://github.com/lean-delivery/ansible-role-jmeter
Timur
https://github.com/lean-delivery/ansible-role-docker
Timur
Переменные из vars перекрывать не нужно обычно. Они не для этого
Sergey
^^^ +++
Full
О, ну, вопросов меньше не стало. Например, зачем пустой vars/default.yml
Full
В ansible-role-docker еще интереснее - в vars используются переменные, определенные в defaults, а в defaults - определенные в vars.
Full
Если их все переместить в defaults, или все переместить в vars, или перемешать между vars и defaults - что-то сломается? Роль перестанет работать?
Артём
В принципе, если все таски и хэндлеры из структуры директорий роли переписать в один большой плейбук, то оно всё ещё будет работать.
Full
Ладно, видать, время еще не пришло.
Full
Мне то за что? :)
Aleksey
Мне то за что? :)
что пока не начал все переписывать))) шутка!
Full
Мне это пока что просто ни к чему.
Full
Мне лично это только добавляет неудобства. Мне нужна весомая причина, чтоб весь скоуп переменных в роли размазывать по разным файлам. У меня такой причины пока нет.
Aleksey
Мне лично это только добавляет неудобства. Мне нужна весомая причина, чтоб весь скоуп переменных в роли размазывать по разным файлам. У меня такой причины пока нет.
Вот тут https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html есть раздел variable precedence , где очень подробно объясняется что и в какой очередности заходит в окружение плейбука. И там точно нет такого что в одном месте одно за другое заходит. Это все-таки линейная система. И если что-то кажется странным, значит "фокусник" сделал очень быстрый финт и вы его пропустили)
Aleksey
{project_root}/templates/* если нужна jinja
Андрей
хранить в roles не пробовали и каждый проект отдельной директорией?
Андрей
Тогда в {{ root_project }}/templates/
Андрей
условно, да
Андрей
хотя у меня плейбуки отдельно от /etc/asnible хранятся. Но это неважно
Андрей
конечно. тогда не запутаетесь
Aleksey
Это ответ на вопрос "как", а не "зачем". Для меня пока что так.
а! пофилософствовать? легко: это для правильной организации реюзабильности скриптов: плейбуков и ролей
Aleksey
это же не язык со своей семантикой и правилами инкапсуляции и проч. тут вот так - все просто)
Full
В этом чате я лучше придержу свое мнение про ямл.
Aleksey
В этом чате я лучше придержу свое мнение про ямл.
и? мейсье любитель json-а? а вы раньше не работали с xml? не пробовали парсить эту хрень? о! yaml по сравнению с указанными просто гениальное изобретение!
Full
Nope. На эту провокацию я не поддамся.
Aleksey
Nope. На эту провокацию я не поддамся.
я просто свое мнение высказал. кто пишет на питоне, тот от ямла не смеётся)
Timur
Если их все переместить в defaults, или все переместить в vars, или перемешать между vars и defaults - что-то сломается? Роль перестанет работать?
Разумеется. В defaults лежат те переменные, которые могут переопределяться пользователем при запуске. В vars - служебные, задающие основную логику роли. Смешивать одно с другим совершенно не нужно. Например, в vars лежат переменные, зависящие от фактов хоста - специфичные для определенных дистрибутивов, версий, типов сервиса и т.п. Они никак не должны быть в defaults, т.к. переопределять их не нужно, но использовать данные из defaults они вполне могут
Full
О, так яснее, конечно. Спасибо.
Sergey
да
Sergey
Да. В доке все описано.
Full
Буквально сегодня заглядывал - он там все, начиная с sysv умеет.
Aleksey
таким образом точно нет.
Aleksey
yum: name: nginx check_mode: true register: result
Aleksey
если вы делаете проверку то делайте проверку. если ставите ставьте
Sebor▂▅▇█▓▒░
зачем вообще проверку делать, да еще и через шелл?? и цель какая в итоге?
Sebor▂▅▇█▓▒░
ставишь репу, потом ставишь пакет