Andor
предположим что у меня есть модуль nginxinc.nginx и он параметром принимает имя шаблона для конфига nginx, как мне сказать чтобы он брал шаблон из моей роли, а не из своей?
Timur
Anonymous
@asdfasdfasdf будет жить. Поприветствуем!
Andor
George
Andor
да
George
если это не сделано в виде переменной (имя файла с темплейтом), то никак
George
форкаешь роль, дорабатываешь
Andor
template_file: nginx.conf.j2очевидно он ролью нжинкса подтянется из самой этой роли
George
публикуешь как свю
George
Andor
как мне ему сказать чтобы он брал шаблон не от себя, а из моей самодельной роли?
Andor
моя роль использует роль nginxinc.nginx
Andor
и я хочу подменить ей шаблон
Timur
Andor
Timur
???
Andor
- name: import nginx role
import_role:
name: nginxinc.nginx
Timur
Timur
В чем проблема-то?
Andor
ну вопрос-то в том чтобы указать в переменную что-то чтобы оно брало не из своей роли шаблон, а из моей
Andor
туда прямо ../mynginx/templates/... можно указать что ли?
Timur
Andor
или в каком виде?
Timur
George
Timur
This can be a relative or an absolute path.
Andor
о как
Andor
спасибо, щас попробую
Andor
а как этот путь будет выглядеть? допустим моя кастомная роль называется mynginx
John
если ansible-doc -l | grep napalm
napalm_install_config Installs the configuration taken from a file on a device supported by NAPALM
значит ли это что модуль в системе есть и его можно использовать?
спрашиваю потому что:
TASK [Install new configuration] ****************************************************************
fatal: [vyos]: FAILED! => {"changed": false, "msg": "the python module napalm is required"}
Andor
хотя ща почитаю
John
ой, а сам таск выглядит так:
tasks:
- name: Install new configuration
napalm_install_config:
hostname: "{{ ansible_ssh_host | default('vyos') }}"
username: "{{ ansible_ssh_user | default('vyos') }}"
выше отрывок из таска
Andor
некрасиво, но работает
Andor
всем спасибо
John
ну и на всякий случай:
$ python -m pip list | egrep "ansible|napalm"
ansible (2.8.0)
napalm (2.4.0)
napalm-ansible (1.0.0)
napalm-base (1.0.0)
napalm-vyos (0.1.6)
Oleksandr
а как уважаемые господа в ансибле забирают статусы всех контейнеров докера, которые есть на машине?
Oleksandr
docker_container_info работает с указанным именем контейнера
Oleksandr
а хотелось бы чтобы без баша и чтобы сам нашел все
Andor
Anonymous
@maximberdyshev будет жить. Поприветствуем!
Anonymous
@madmanidze будет жить. Поприветствуем!
Roman
Добрый день! Напомните пожалуйста, в jinja2 template, что бы выставить условие if var == value, как корректно запись выглядит?
Так?
{% if 'var' == value %}
blabla
{% endif %}
Или что то упускаю?
Roman
В общем без ковычек нужно:)
Andor
я могу из хендлера моей роли дёрнуть хендлер в другой роли?
Sergey
Sergey
То есть ты понимаешь, что шлёшь лесом всю объектную модель Ansible и сам смысл хэндлеров?....
Andor
Andor
ну вот представь, что я делают include_role, потом рядом кладу кусок конфигурации для приложения в той роли и хочу дёрнуть родной хендлер, а не делать ещё раз nginx reload
Sergey
Andor
Sergey
Sergey
Andor
Timur
ну вот представь, что я делают include_role, потом рядом кладу кусок конфигурации для приложения в той роли и хочу дёрнуть родной хендлер, а не делать ещё раз nginx reload
Если есть роль, которая настраивает приложение, все конфиги этого приложения должны делаться этой же ролью, возможно, с мультивызовом, но этой же, а не чем-то еще. Если вам нужно обрабатывать логику настройки приложения за пределами роли, то весь смысл роли просто теряется.
Andor
Timur
Я говорю совершенно иное
Timur
Абстракции делать правильно. А ломать логику абстракций - нет
Andor
ну ой, не умеет эта роль делать кастомные конфиги так как удобно мне, а свою херачить я не хочу
Andor
спасибо, что научил
Timur
Andor
вообще это смешно. сначала говорят что дёргать хендлеры из хендлеров это неправильно, а потом показывают на listen который делает практически это
Andor
#странное
Timur
Andor
неправда написана?
Timur
Правда написана. Но это плохой подход. Роли получаются зависимыми друг от друга. И при изменении кода одной (например, набора хендлеров или триггеров) придется соответствующим образом менять и другие. Иначе все сломается
Timur
Тогда возникает резонный вопрос - зачем нам вообще три отдельные роли, если по-отдельности они нормально работать не могут, как и меняться независимо друг от друга?
Andor
а вот предположим у меня есть group_vars/all/stuff.yaml в котором есть какой-то дикт
если я делаю include_role с vars: ... в котором указываю эту же переменную с диктом, она же просто заменится без вариантов? или можно как-то смёржить эти два дикта?
Andor
Andor
2 и 3 роль - независимы друг от друга, но зависимы от 1