kbks
спасибо
Victor
лично я, правда, такого рода данные храню не в host_vars а в group_vars
Stefan
лично я, правда, такого рода данные храню не в host_vars а в group_vars
спасибо за правку, а то как раз затык был с vars, ругалось на не правильное размещение видать
Stefan
лично я, правда, такого рода данные храню не в host_vars а в group_vars
так в group вроде как константы обычно хранят
Victor
так в group вроде как константы обычно хранят
Ну вот у меня есть группа хостов, на которых развернут сервис A, логично же все данные относящиеся к этому сервису, которые должны быть везде одни и те же, хранить в одном месте?
Stefan
когда подходят под всё
Stefan
а если они уникальны? как в случае моем
Stefan
всё пихать ведь в груп_варсы не оч, каша будет
Victor
Ну в хостварсах я, например, тоже храню данные, уникальные для хоста
Stefan
ну вот))
Александр
можно в принципе оптимизировать до одного json_query - когда нибудь и до этого руки дойдут
- name: install nginx configs template: src: "../files/nginx/{{ item }}" dest: "{{ nginx_dir }}/{{ item }}" loop: "{{ lookup('filetree', 'nginx/', wantlist=True) | json_query('[?state!=`directory`].path') }}" notify: - reload nginx tags: - nginx_update_configs как оказалось, есть решение
Stefan
Ну в хостварсах я, например, тоже храню данные, уникальные для хоста
а так блин, смысл есть в груп_варсах всё делать для таких случаев, можно же создавать файлы с меткой например nginx_playbook и туда запихивать сколько хочешь этих переменных
Stefan
чтоб не было каши и было понятно что к чему относится
Victor
Ну, типо, какая разница, иметь 100 разных групп или 100 разных плейбуков? Один хер каша
Stefan
Ну, типо, какая разница, иметь 100 разных групп или 100 разных плейбуков? Один хер каша
а не подскажешь по какой причине если я запускаю общий плейбук с приатачиванием роли к группе, то он не хочет читать переменные, которые объявленны в груп_варсах --- - hosts: docker_containers connection: docker roles: - nginx "msg": "'sites' is undefined" cat group_vars/nginx_playbook sites: - name: test-lala.com caching: true
Victor
а не подскажешь по какой причине если я запускаю общий плейбук с приатачиванием роли к группе, то он не хочет читать переменные, которые объявленны в груп_варсах --- - hosts: docker_containers connection: docker roles: - nginx "msg": "'sites' is undefined" cat group_vars/nginx_playbook sites: - name: test-lala.com caching: true
У тебя либо хост не сосотоит в группе nginx_playbook Либо group_vars не в инвентори/папке с плейбуком либо нужно переменовать group_vars/nginx_playbook в group_vars/nginx_playbook.yml либо перемести nginx_playbook в group_vars/nginx_playbook/sites.yml ,например, вместо "sites" может быть что угодно
Stefan
У тебя либо хост не сосотоит в группе nginx_playbook Либо group_vars не в инвентори/папке с плейбуком либо нужно переменовать group_vars/nginx_playbook в group_vars/nginx_playbook.yml либо перемести nginx_playbook в group_vars/nginx_playbook/sites.yml ,например, вместо "sites" может быть что угодно
а у меня группа docker_containers и у меня файл сразу находится в папке group_vars разве оно не должно по умолчанию искать в этой папке на соответствие переменных которые заданы в плейбуке роли?
Victor
а у меня группа docker_containers и у меня файл сразу находится в папке group_vars разве оно не должно по умолчанию искать в этой папке на соответствие переменных которые заданы в плейбуке роли?
Прости не понял. У тебя есть инвентори. в котором есть хосты и группы. В плейбук автоматом загружаются переменные для хоста и для всех групп в которых он состоит. Поиск идет, условно, в ./inventory/<host|group>_vars/<hostname> и ./playbooks/<host|group>_vars/<hostname> Если у тебя есть play для docker_containers, то для хоста будут загружены все переменные групп в которых состоит хост docker_containers или хосты в группе docker_containers. Если у тебя хост не состоит в группе nginx_playbook то переменные из group_vars/nginx_playbook загружены не будут. Один хост может состоять в нескольких группах, да.
Victor
Там еще были какие-то ограничения на расширения файлов в плагинах, емнип, но это не точно, поэтому выше писал что лучше бы переместить в файл с расширением чтобы ямловская дата лежала в файле с соотвествующим расширением
Victor
за "ты" извени, если что
Stefan
я прочел что если оно называется иначе, то не будут браться переменные, но почему?((
Stefan
какая ему разница, ведь ему главное чтоб соответствия были найдены
Victor
У меня вопрос, почему переменные для хостов docker_containers лежат в nginx_playbook и как ansible должен это понять? Есть два пути, - заинглудить в плейбуке переменные - сделать группу nginx_playbook в которую либо напрямую либо через наследование включить соотвествующие хосты.
Stefan
рекурсивно типо
Victor
даже третий есть, указать это в group_vars/docker_containers
Victor
так он разве не ищет внутри файлов сам соответственные переменные?
Ищет, но лично я не вижу логики по которой оно будет там рекурсивно искать
Stefan
даже третий есть, указать это в group_vars/docker_containers
вот, а я вот хотел сделать понятней метку, типо здесь хранятся переменные которые относятся к конкретной роли и если нужно будет добавлять еще домены, то было понятно куда
Victor
переменные роли лежат, условно, в roles/<role_name>/vars и defaults
Stefan
а вот это сейчас попробую
Stefan
похоже это мне больше нужно
Victor
вей
Victor
нужно типо различать, группы, роли и плейбуки в терминах ansible
Stefan
да блин поваренный уже, трудно сейчас нормально сформулировать мне просто хотелось чтоб если я внес в груп_варсы в конкретный файл переменные, роль понимала откуда их брать
Victor
Роль, обычно, самая общая, типо web_server, которая ставит и настраивает вебсервер, при этом что-конкретно должно быть в конфигах указывается либо в переменных инвентори, либо play
Artur
Stefan
подумай над следущим docker_containers: children: group_a: hosts: a1: a2: vars: sites: - a group_b: hosts: b1: b2: vars: sites: - b
всё таки варсы в самой роли были наиболее оптимальным решением, заработало как раз туда всё это дело в случае появления новых доменов или чего-то еще и будет вноситься и применяться на всю группу хостов
Stefan
FYI роль в ansible это не группа хостов
ну я ж указываю в общем плейбуке куда её применить
Victor
о папке vars в частности и файлом внутри
Ну этот yaml ты можешь раскидать по всему инвентори как душа лежит
Victor
FYI роль в ansible это не группа хостов
Как у одной группы хостов может быть несолько ролей, веб-сервер, сервер-приложения, ntp-клиент, так и одна роль может применяться к нескольким группам, группа хостов с вебсерверами под один сайт, группа хостов с вебсерверами под другой сайт
Pavel
а хранить переменные в роли - не огонь
Victor
в роли норм хранить дефолты для этой роли
Stefan
всё, разобрался наконец-то о чем вы мне говорите
Stefan
в моем случае пожалуй будет действительно лучше групварсы, например если я не ролью буду пользоваться, то будет удобней вытягивать переменные каким-то единичным плейбуком с групварсов
Stefan
короче зависит от ситуации, я на два варианта просто как оказалось вышел
Stefan
думал один существует
Stefan
@v_litvin @DejaM0rt спасибо за терпение и помощь))
Victor
но ты можешь сосать переменные из произвольного файла, да
Lex
ребяты! всем привет
Lex
использовал кто у себя в playbook-ах rsync (синхронайз) в mode: pull
Lex
никак не могу победить owner
Victor
никак не могу победить owner
у меня есть мод пул, но овнера не ставил
Юрий
Привет. Подскажите как правильно оформить часть для дефаулта: tomcat_home: "{{ tomcat_catalina_home | default('/opt/tomcat'tomcat_version.split('.')[0]) }}" в таком виде падает: An unhandled exception occurred while templating '{{ tomcat_catalina_home | default('/opt/tomcat'tomcat_version.split('.')[0]) }}'. Error was a <class 'ansible.errors.AnsibleError'>, original message: template error while templating string: expected token ',', got 'tomcat_version'. String: {{ tomcat_catalina_home | default('/opt/tomcat'tomcat_version.split('.')[0]) }}"}
Lex
у меня есть мод пул, но овнера не ставил
У меня беда. Когда делаю push все нормально с правами, а если делаю pull то выдает мои права
Victor
archive?
Victor
+
Александр
ы
Victor
+
Это оператор конкатенации
Oleg
Комрадз, кто юзает ансибл с докер_композом?
Lex
archive?
Не выключал...по умолчанию вроде да
Victor
rsync_path: 'sudo rsync' ?