Aleksandr
https://github.com/ansible/molecule/issues/1471
Andrey
Подскажите, вот плейбук запускаю, и у меня для применения указана группа. А есть ли у меня возможность в плейбуке ссылаться на хост, к котому он будет применяться? Мне нужно дождаться пока сервис установленный поднимиться.
Andrey
не… как ждать я знаю… но мне туда нужно передеать IP хоста, где ждать… а плейбук применяется на группу.
Andrey
или мне нужно делегировать ожидаение на ту машину и там wait_for host: localhost ?
Andrey
(я не знаю как делегировать)
Гайрат
delegate_to?
Andrey
delegate_to?
точно… а ему тоже нужно указать куда делегировать?!
Andrey
А стоп… выходит когда я говорю wait_for, то это ожидание выполняется на удаленной машине!? соответственно я могу указать localhost?
Andrey
wait_for: host: "localhost" port: 15672 ?
inqfen
В host и так локалхост по дефолту
inqfen
Указываешь порт и он ждет на той машине когда локально этот порт поднимется
Andrey
Другой вопрос. У меня есть плейбук и в нем есть переменные типа: --- - name: Step0 hosts: STAGE1 vars: MAINHOSTURL_PROTOCOL: "http://101.11.1.1:5001” Вот в этой группе STAGE1, несколько IP адресов. И мне нужно в эти переменные, вставить вот этот IP адрес из группы. Как это можно сделать?
Andrey
Нашел!! vars: TEST1: "Privet host {{ inventory_hostname }}"
Tamerlan
всем привет! кто как разделяет переменные в зависимости от окружения (test/dev/prod)? держите ли все хосты в одном инвентори, или разделяете?
inqfen
Разные окружения-разные инвентори
Tamerlan
Разные окружения-разные инвентори
а где переменные держите?
UglyKoyote
Разные окружения - разные файлы с переменными
inqfen
В инвентори all и окружениеспецифичные - в своих инвентори
Andrey
всем привет! кто как разделяет переменные в зависимости от окружения (test/dev/prod)? держите ли все хосты в одном инвентори, или разделяете?
Вот я вчера такое и делал. У меня два окружения и все переменные одинаковые, только значения разные. В значения добавляешь фигурные скобки и их только переопределяет для группы например
Dmitriy
when: not nginx_reload['results'][0]['failed']
Доброго дня, а вы не могли бы указать где можно почитать про подобные конструкции, на офф доке довольно скудно описано, столкнулся с подобной проблемой опять и не могу понять что значит 0. Предполагаю что это элемент массива(словаря), но не могу понять почему 0
Dmitriy
[0] - это индекс элемента в списке
а подскажите, тогда вот тут какой будет ? https://pastebin.com/hTvkhvR2
Dmitriy
попробую сравнить и понять...
Dmitriy
Потому что питон
это....плохо ?
Tamerlan
для наглядности
inqfen
это....плохо ?
Нет, это общепринято
inqfen
Но был бы ансибл на паскале - было бы 1
Sergey
а подскажите, тогда вот тут какой будет ? https://pastebin.com/hTvkhvR2
Простыню в ЛС пришли, у меня закрыт пастбин
Dmitriy
Нет, это общепринято
получается надо курс молодого бойца питона пройти :)
inqfen
С 0 нумерация начинается
inqfen
0, 1, 2....
Dmitriy
В results? Он там один, поэтому 0
when: not mysql_installed[0]['failed'] получается так ?
Lamobot
when: not mysql_installed[0]['failed'] получается так ?
mysql_installed.failed или mysql_installed['failed']
inqfen
Нужнл результат этой таски в переменную отправить
Tadeusz
уже б нагуглил раз 15
inqfen
уже б нагуглил раз 15
Ты ещё скажи доки бы почитал
inqfen
Зачем тогда чат
Tadeusz
точно
Dmitriy
искал, гуглил, даже на яндекс полез в надежде получить результат лучше гугла. Спасибо за помощь. Можете в доках ткнуть где про такое можно подробно почитать ? а то тут(https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html), как по мне, недостаточно подробно
Lamobot
Это тебе не про условия нужно читать а про переменные в python/ansible
Dmitriy
@inqfen @aabramovich не надо быть такими злыми, не нашел я ответ, вот и спросил
Lamobot
И типы данных - словарь и лист
Tadeusz
еще скажи что я проклянал)
Dmitriy
И типы данных - словарь и лист
и вам спасибо, буду курить ман
Andrii
Всем привет. Такая ситуация - вынес дикт из плейбука в var файл, делаю include_vars, но при плее выкидывает ошибку, что плейбук не знает о моем дикте, хотя при verbouse выводе явно видно, что include_vars проходит нормально. Может у кого есть идеи в чем дело?
Andrii
Если быть точнее, то плейбук не видит дикт, когда пытаюсь пройтись по нему с помощью loop
Lamobot
Если быть точнее, то плейбук не видит дикт, когда пытаюсь пройтись по нему с помощью loop
А как по дикту можно через loop пройти? :) Покажите код, или debug попробуйте.
Andrey
для наглядности
Чуть выше глянь моего сообщения тебе. Я сам вчера искал ответ на вопрос и начало файла кидал с решением
Andrii
А как по дикту можно через loop пройти? :) Покажите код, или debug попробуйте.
отбой тревоги) скопировал переменные в var файл, забыв убрать "vars:", поэтому плейбук думал, что там еще один уровень вложенности. Под пройтись loop-ом по дикту я имел ввиду что-то такое, например when: item.value in inventory_hostname and "smth" in item.key loop: "{{ lookup('dict', envs.dev) }}"
Anonymous
Для ограничения выполнения тасков по группам есть плей
Доброе утро. Уточню на всякий случай. Предлагаете делать что-то подобное, чтобы не прибивать гвоздями имена групп в ролях? Внутри роли нужные таски будут соотвественно протегированны, а общие будут помечены тегом always. Верно мыслю? --- - hosts: timeservers become: yes gather_facts: no roles: - { role: chrony, tags: chrony-server} - hosts: all become: yes gather_facts: no roles: - { role: chrony, tags: chrony-client}
Timur
Но я бы просто условия с определёнными триггерами добавил к некоторым таскам, которые нужно пропускать
Timur
А сами триггеры можно через группы, плейбуки и вообще где угодно задавать
Timur
Например: - name: Register gitlab-runner gitlab_runner: url: '{{ gitlab_url }}' api_token: '{{ gitlab_api_token }}' registration_token: '{{ gitlab_ci_token }}' description: '{{ gitlab_runner_description }}' tag_list: '{{ gitlab_runner_tags }}' run_untagged: '{{ gitlab_runner_untagged_builds_run }}' state: present become: true register: gitlab_runner_token when: - not gitlab_runner_skip_registration
Timur
В конце в директиве when задан триггер
Timur
Его можно определять где угодно
Гайрат
Его можно определять где угодно
Предварительно задав дефолтное значение
Anonymous
Подскажите, что я неправильно делаю? Почему нижеописанная таска выполняется, хотя в условии указано when: not_chrony_server Вот плейбук: - hosts: all become: yes gather_facts: no roles: - { role: chrony, tags: chrony-client} И вот сама таска в роли chrony: - name: template chrony client config template: src: chrony_client.conf.j2 dest: '{{ chrony_config_file_path }}' when: not chrony_server ---- в defaults для роли указан chrony_server: false
Timur
not false == true
Timur
Уберите not, если триггер у вас положительный
Anonymous
Чуть расширю обьяснение, секунду
Anonymous
Вот так выглядит две таски, одну надо запускать только на хостах, для которых chrony_server: true, а вторую для всех остальных. - name: template chrony server config template: src: chrony_server.conf.j2 dest: '{{ chrony_config_file_path }}' notify: restart chrony when: chrony_server - name: template chrony client config template: src: chrony_client.conf.j2 dest: '{{ chrony_config_file_path }}' notify: restart chrony when: not chrony_server
Anonymous
Для этого в плейбуке я передал vars таким образом: --- - hosts: timeservers become: yes gather_facts: no roles: - { role: chrony, tags: chrony-server} vars: chrony_server: true - hosts: all become: yes gather_facts: no roles: - { role: chrony, tags: chrony-client}
Anonymous
И второй запуск плейбука ( для хостов all) как раз и приводит к тому, что для chrony_server'а перезаписывается конфиг из таски - name: template chrony client config
George
фигня какая-то. А что мешает на уровне инвентори распилить группы?
Timur
Вообще по уму - да