George
jfrt_ha_master -> jfrt_ha_master1 и любуйся сломанными шаблонами.
Alex
ну так то да, но можно же и по регулярке делать
NM
Я раньше писал под свои апликухи
Sergey
jfrt_ha_master -> jfrt_ha_master1 и любуйся сломанными шаблонами.
Некорректно. Ты же группы вызываешь из плеев, результат предсказуем.
George
play, которая шарится по группам - это нормально. У неё и так и так hosts есть. А вот роль - не нормально, если её нельзя с группы на группу перетащить или группу переименовать.
Sergey
play, которая шарится по группам - это нормально. У неё и так и так hosts есть. А вот роль - не нормально, если её нельзя с группы на группу перетащить или группу переименовать.
Дерьмово написанная роль, факт. Но говнокод - это данность. Можно писать норм, ничто тебя не ограничивает на самом деле.
Alex
т.е. в моем случае с HA мне роль надо условно разбивать на master и slave?
George
citius
вот так же норм, не?
citius
я эту роль использую в своих проектах, и имя группы успешно переназначается в случае надобности (в моем случае - всегда)
George
@citius, я сильно не вчитывался, но похоже на хороший код.
Sergey
вот так же норм, не?
Вполне. Имя группы и прочее - через переменные.
George
А нет, это же дефолты роли. Не-не-не. Всё настраивать в перменных уровня play.
Aleksandr
Привет. Подскажите как-то без include покрасивее можно сделать задачу, когда на n серверов надо раскатать m конфигов, при этом в кажом конфиге нужно подставлять из списка LIST значение, создавая на каждый элемент списка копию конфига со своим значением?
Sergey
А нет, это же дефолты роли. Не-не-не. Всё настраивать в перменных уровня play.
Вообще-то дефолты как раз для того, чтобы перекрываться по необходимости.
citius
А нет, это же дефолты роли. Не-не-не. Всё настраивать в перменных уровня play.
Ну мне кажется что наличие хоть какого-то дефолта в роли нужно, это же задокументировано
George
@tnt4brain, отлаживать такое, если кто-то забыл что-то указать в play, будет грустно. Роль пошла чёрти куда чёрти что сделала. Лучше уж фейльнутся на отсутствующей переменной.
citius
В этой же роли есть preflight checks, которые проверяют кучу всего
Timur
А нет, это же дефолты роли. Не-не-не. Всё настраивать в перменных уровня play.
Тебе никто не мешает дефолтное значение роли переопределить на уровне плея, инвентаря и т.п.
George
А дальше вопрос: помогает тебе роль найти ошибки и помогает поглубже в ногу выстрелить. Молчаливые дефолты на чужие хосты - это так себе идея.
Timur
Кто на ком стоял?
Roman
Большой теоретический вопрос - если есть несколько ДЦ, плюс энвайрменты разделены по странам в проде, плюс есть большой DEV энвайрмент, который разделен на stage/test и прочее и тоже по странам. Как бы кто решал инвентори в таком случае? Понятно, что никаких when: dc == ‘DC1’ быть не может в ролях.
Aleksandr
Как связаны элементы списка и хосты?
main.yaml - name: ensure sec configs include: sec-configure.yml template_file="{{ sec_file }}" loop_control: loop_var: sec_file with_items: - CiscoASA - Fortigate - PaloAltoLEEF - pfSense - suricata ### sec-configure.yml - name: upload sec config template: src: "{{ template_file + '.sec.j2' }}" dest: "/etc/sec/{{ template_file }}-{{ item }}.sec" with_items: "{{ event_processor_ip }}" ### event_processor_ip: - ip1 - ip2 ### CiscoAsa (содержимое, урезано) {{ item }}
Roman
Что значит решать инвентори?
заначит - где и что хранить. Если например DC-related переменные нужны для всех сред, где хранить совсем общие вещи и.т.д.
Sheridan
камрады, а напомните... ansible_user: user ... - name: one copy: ... vars: ansible_user: admin - name: two debug: msg="{{ ansible_user }}" В дебаге же останецца user ?
Sheridan
Непонятна суть вопроса
вопрос про область видимости
Timur
Тогда непонятно, что там выше
Sheridan
да
спасибо )
Vitaly
Гаспода может кто свежим взглядом глянет в чем косяк - name: Add ssh keys for "{{ outer_item.name }}" authorized_key: "user={{ outer_item.name }} key='{{ lookup('file', item) }}' state=present exclusive=yes" with_first_found: - files: - "ssh_{{ env }}_{{ outer_item.name }}_{{ inventory_hostname }}.pub" - "ssh_{{ env }}_{{ outer_item.name }}.pub" - "ssh_{{ env }}.pub" - "ssh_{{ outer_item.name }}_{{ inventory_hostname }}.pub" - "ssh_{{ outer_item.name }}.pub" - paths: - ../../../files
Vitaly
Руками отрабатывает на ура, в aws падает fatal: [server-02]: FAILED! => {"msg": "No file was found when using first_found. Use errors='ignore' to allow this task to be skipped if no files are found"}
Vitaly
awx как-то по другому пути эксплуатирует? )
Timur
Строчный синтаксис
Timur
А, и еще момент
Timur
Вы пытаетесь использовать переменную с именем env?
Vitaly
В смысле строчный такого вида? authorized_key: user: key:
Vitaly
Timur
В смысле строчный такого вида? authorized_key: user: key:
Да, должен быть такой, а не как у вас
Vitaly
Переделаю сейчас, но я так понимаю на работу это мало влияет
Timur
awx как-то по другому пути эксплуатирует? )
Да, скорее всего. Нужно быть очень аккуратным в указании абсолютных путей
Timur
С таким относительным путем напрашиваетесь на неприятности: - ../../../files
Timur
Вы уверены, что в том пути, где будет выполняться код, относительно него будет такая директория?
Vitaly
ну да, там обычная структура проэкта ./ files global_vars roles usermanager tasks mail.yml
Vitaly
../../../files - относительно корня проэкта
Vitaly
Переписал, как и ожидалось ничего не дало, по сему подниму вопрос. В AWX как-то по другому отрабатывает patch ?
Vitaly
потому что-то руками роль отрабатывает без проблем
Vitaly
собственно пробовал /files положить рядом с ролью, результат один
Vitaly
А что происходит-то?
Руками отрабатывает на ура, в aws падает fatal: [server-02]: FAILED! => {"msg": "No file was found when using first_found. Use errors='ignore' to allow this task to be skipped if no files are found"} awx как-то по другому пути эксплуатирует? )
Timur
Значит, путь не правильный
Vitaly
Так в том-то и дело что все верно
Timur
Или с расположением напутали, или одна из переменных у вас не то значение несет
Timur
Так в том-то и дело что все верно
Дебагом вывести пробовали все переменные?
Vitaly
да вот сейчас ковыряю как дебагом вывести что-то по with_first_found
Denis 災 nobody
просто в -vvvv нет инфы?
Vitaly
нет к сожадению
Vitaly
походже оно вообще - patch: игнорирует
Sergey
походже оно вообще - patch: игнорирует
а что это такое вообще за директива?
Vitaly
Пусьб где искать файлы из - files
marantz
Приветсвую. Как сделать, чтобы переход к следующему таску происходил бы даже в случае неудачи текущего таска?
marantz
ignore_errors: yes
Благодарствую!
marantz
А чтобы при неудаче текущей таски пропускать следующую?
Alex
А чтобы при неудаче текущей таски пропускать следующую?
делаешь register, а в следующей проверяешь в when
Vitaly
Дебагом вывести пробовали все переменные?
В общем нашел, из за {{ env }} вся беда была
Timur
Ну, я ж говорил
Vitaly
Правда так и не понял почему руками отрабатывала локально, а на awx падало