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
Aleksandr
Anastasia
Не очень понятно - в чем именно проблема?
да, действительно. С циклом все хорошо - он берет нужные хосты, но не подставляет айпи-адреса. То есть, я предполагаю, ошибка в {{host[ansible_host]}}:6432
Timur
Anastasia
вопрос - как правильно написать эту конструкцию?
Timur
Anastasia
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 - работает.
в этом блоке кода изменений не было, просто перенёс часть существующего кода в отдельный файл.
Aleksey
Vitaliy
зависимостей вообще нет
Vitaliy
есть стандартные таски с loop-ами
Vitaliy
имеется также copy файла requirements.txt
но не думаю то это причина
Sergey
[IPT] Dmitry
Aleksey
судя по тексту ошибки образовалась зацикленность вызовов. смотрите текст. дьявол в деталях
Vitaliy
Vitaliy
ок, попробую разобраться
Ivan
Full
Народ, какой сакральный смысл в разделении vars и defaults?
Вопрос не про приоритеты переопределения переменных, а про то, зачем их так разделять в рамках одной роли.
Full
Иными словами, это позволяет решить какую-то задачу, или просто "нужно больше мест переопределения переменных"?
Sergey
Full
А какую? :)
Было бы клево какой-нить пример из жизни, или хотя-бы в вакууме.
vars перекрываются в инвентори, емнип, и это едва ли не самый частый способ применения.
Sergey
Лично я все дефолты ролей, которые существуют на случай, чтобы роль не "ломалась", кидаю в defaults. А что-то, что из них собирается -выражения и прочее - уже в vars.
Full
Хм. Занятно, спасибо.
Sergey
🙏🏻
Timur
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.
Timur
Full
Если их все переместить в defaults, или все переместить в vars, или перемешать между vars и defaults - что-то сломается? Роль перестанет работать?
Артём
В принципе, если все таски и хэндлеры из структуры директорий роли переписать в один большой плейбук, то оно всё ещё будет работать.
Full
Ладно, видать, время еще не пришло.
Aleksey
Full
Мне то за что? :)
Full
Мне это пока что просто ни к чему.
Full
Мне лично это только добавляет неудобства. Мне нужна весомая причина, чтоб весь скоуп переменных в роли размазывать по разным файлам. У меня такой причины пока нет.
Aleksey
{project_root}/templates/* если нужна jinja
Андрей
хранить в roles не пробовали и каждый проект отдельной директорией?
Андрей
Тогда в {{ root_project }}/templates/
Андрей
условно, да
Андрей
хотя у меня плейбуки отдельно от /etc/asnible хранятся. Но это неважно
Андрей
конечно. тогда не запутаетесь
Full
Aleksey
это же не язык со своей семантикой и правилами инкапсуляции и проч. тут вот так - все просто)
Full
В этом чате я лучше придержу свое мнение про ямл.
Full
Nope. На эту провокацию я не поддамся.
Ivan
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▂▅▇█▓▒░
ставишь репу, потом ставишь пакет