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 и окружениеспецифичные - в своих инвентори
Dmitriy
when: not nginx_reload['results'][0]['failed']
Доброго дня, а вы не могли бы указать где можно почитать про подобные конструкции, на офф доке довольно скудно описано, столкнулся с подобной проблемой опять и не могу понять что значит 0. Предполагаю что это элемент массива(словаря), но не могу понять почему 0
Sergey
inqfen
Dmitriy
попробую сравнить и понять...
Dmitriy
Tamerlan
Tamerlan
для наглядности
inqfen
Но был бы ансибл на паскале - было бы 1
Sergey
inqfen
inqfen
С 0 нумерация начинается
inqfen
0, 1, 2....
inqfen
Lamobot
inqfen
Нужнл результат этой таски в переменную отправить
Tadeusz
уже б нагуглил раз 15
inqfen
Зачем тогда чат
Tadeusz
точно
Sergey
Dmitriy
искал, гуглил, даже на яндекс полез в надежде получить результат лучше гугла. Спасибо за помощь. Можете в доках ткнуть где про такое можно подробно почитать ? а то тут(https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html), как по мне, недостаточно подробно
Lamobot
Lamobot
Это тебе не про условия нужно читать а про переменные в python/ansible
Dmitriy
@inqfen @aabramovich не надо быть такими злыми, не нашел я ответ, вот и спросил
Lamobot
И типы данных - словарь и лист
Tadeusz
еще скажи что я проклянал)
Andrii
Всем привет. Такая ситуация - вынес дикт из плейбука в var файл, делаю include_vars, но при плее выкидывает ошибку, что плейбук не знает о моем дикте, хотя при verbouse выводе явно видно, что include_vars проходит нормально. Может у кого есть идеи в чем дело?
Andrii
Если быть точнее, то плейбук не видит дикт, когда пытаюсь пройтись по нему с помощью loop
Alex
Lamobot
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
Anonymous
Timur
Но я бы просто условия с определёнными триггерами добавил к некоторым таскам, которые нужно пропускать
Anonymous
Timur
А сами триггеры можно через группы, плейбуки и вообще где угодно задавать
Anonymous
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
Его можно определять где угодно
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
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
Timur
George
фигня какая-то. А что мешает на уровне инвентори распилить группы?
Timur
Вообще по уму - да