V 🏴‍☠️
Почему то не прокатывало
V 🏴‍☠️
А, я понял почему не прокатывало. У меня были одинаково названы группы и хосты. Недавно переделал это
V 🏴‍☠️
Всё, спасибо
Alexander
Всем привет! Подскажите, как в выражении ниже написать, чтобы tag_category воспринималась ansible-ом как переменная, а не строка? set_fact: tag: "{{ (item.tags | items2dict(key_name='category_name', value_name='name'))['tag_category'] }}"
Volodymyr
указать как переменную, а не строку
Alexander
спасибо, попробую
Отделение Bereke Bank
Нужен совет. Было https://privatebin.net/?942e57538319f3f9#CnMMQ2d5ivDu4znvxLgWq5kstqeS1rfD4qrFvpPMcnGB Таким образом я мог рестартить только нужный инстанс, а не весь луп. Понадобилось сделать так https://privatebin.net/?a26e399315df2b5e#8kZjHz8HEuWwh55bdysgwbaonMXkH3Eo3MzhMkj3oZ2z Теперь не могу допереть как реализовать рестарт только нужного инстанса. Как раньше через регистер и луп по результатам не получается.
Отделение Bereke Bank
@tnt4brain делал такое?)
Sergey
Нет, это в чистом виде странное. Но я бы сделал register, а потом по нему пробежал.
Отделение Bereke Bank
Нет, это в чистом виде странное. Но я бы сделал register, а потом по нему пробежал.
пришлось переделать на инклуд, потому что перед загрузкой темплейта таск с stat register файла сертификата 😒
Sergey
Ну раз ты всё равно вместо кода на питоне пишешь странное на Ansible......
Lamobot
пришлось переделать на инклуд, потому что перед загрузкой темплейта таск с stat register файла сертификата 😒
Делаешь пустой лист, и в него добавляешь те результаты от template, которые changed. Потом в handler проходишься по этому листу. Но это "программирование на ansible"
AlexShmel🐝
Привет, подскажите пожалуйста, хочу что бы плейбук завершал выполнение если переменная LUKS_PASS не задана - name: Set variables set_fact: MODE: "{{ lookup('env','MODE') | default('new', true) }}" RPI_ID: "{{ lookup('env','RPI_ID') }}" RPI_DIR: "{{ lookup('env','RPI_DIR') | default('/tmp/raspi', true) }}" RPI_ISO: "{{ lookup('env','RPI_ISO') | default('/opt/raspi.img', true) }}" DISK_DEV: "{{ lookup('env','DISK_DEV') | default('mmcblk0', true) }}" LUKS_PASS: "{{ lookup('env','LUKS_PASS') }}" - name: Check is varriables set fail: msg: 'variable {{item}} not defined' when: item is not defined with_items: - LUKS_PASS - RPI_ID Вместо ожидаемого выхода получаю TASK [raspi_create : Set variables] ******************************************************************************************************************************************************************************* ok: [64.888888] TASK [raspi_create : Check is varriables set] ********************************************************************************************************************************************************************* skipping: [64.888888] => (item=LUKS_PASS) skipping: [64.888888] => (item=RPI_ID)
AlexShmel🐝
оно его просто скипает и продолжает выполнение
AlexShmel🐝
Добавил в ansible.conf [defaults] error_on_undefined_vars = True
Grek 🇺🇦
вызывай плейбук отдельно, с условием
AlexShmel🐝
вызывай плейбук отдельно, с условием
я и вызываю отдельно ansible-playbook ./pb-raspi_create.yaml --ask-become-pass А с каким условием ?
Aleksey
Привет, подскажите пожалуйста, хочу что бы плейбук завершал выполнение если переменная LUKS_PASS не задана - name: Set variables set_fact: MODE: "{{ lookup('env','MODE') | default('new', true) }}" RPI_ID: "{{ lookup('env','RPI_ID') }}" RPI_DIR: "{{ lookup('env','RPI_DIR') | default('/tmp/raspi', true) }}" RPI_ISO: "{{ lookup('env','RPI_ISO') | default('/opt/raspi.img', true) }}" DISK_DEV: "{{ lookup('env','DISK_DEV') | default('mmcblk0', true) }}" LUKS_PASS: "{{ lookup('env','LUKS_PASS') }}" - name: Check is varriables set fail: msg: 'variable {{item}} not defined' when: item is not defined with_items: - LUKS_PASS - RPI_ID Вместо ожидаемого выхода получаю TASK [raspi_create : Set variables] ******************************************************************************************************************************************************************************* ok: [64.888888] TASK [raspi_create : Check is varriables set] ********************************************************************************************************************************************************************* skipping: [64.888888] => (item=LUKS_PASS) skipping: [64.888888] => (item=RPI_ID)
set_fact тут зачем ? почему оно не в defaults ? почему оно не в required vars ?
Aleksey
{{ variable | mandatory }}
AlexShmel🐝
set_fact тут зачем ? почему оно не в defaults ? почему оно не в required vars ?
Потому что я не знаю кудаю его пихать :( Знал бы как анмибл работает не ходил бы в чаты с глупыми вопросами
AlexShmel🐝
пихай в default
Что это ? Роль особая ? файл ?
Aleksey
эта переменная должна быть задана до запуска плейбука
Aleksey
Что это ? Роль особая ? файл ?
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
Grek 🇺🇦
я и вызываю отдельно ansible-playbook ./pb-raspi_create.yaml --ask-become-pass А с каким условием ?
у тебя будет main.yml в котором ты import_playbook\include_playbook второго плейбука в котором будет все что должно выполняться если LUKS_PASS есть
Aleksey
Что это ? Роль особая ? файл ?
role defaults (defined in role/defaults/main.yml) 1
AlexShmel🐝
Спасибо пойду читать
Grek 🇺🇦
что не так? вынести все что должно выполняться при определенном условии в отдельный плейбук
Aleksey
@tnt4brain как же я тя понимаю бро.
Grek 🇺🇦
@freeseacher ну давай, как котенка - ткни в правильное
Aleksey
не буду я в глубокой прострации. я не понимаю зачем использовать магию 5000 уровня когда можно обойтись подножкой
Aleksey
условный импорт плейбука это как раз она — магия 5000 уровня.
Aleksey
если вам она зачем то нужна наверное вы админите уберлегаси систему или стреляете из пушки по воробьям
Grek 🇺🇦
или не знаю как сделать правильно, никогда не стоит забывать что есть и такой вариант
Grek 🇺🇦
вариантов как сделать то что он хочет явно больше 1, мне первым пришло в голову такое решение, а потом всякий треш типа фейлить таск если переменная не задана
Aleksey
а есть просто ключевое слово mandatory
Aleksey
которое ровно для этого придумано
Aleksey
но только в set_fact оно будет работать не корректно
Aleksey
потому что вся постановка вопроса не правильная
Sergey
https://t.me/pro_ansible/162238 ^^^ +++
Aleksey
https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#defining-mandatory-values
Aleksey
вот описано что делать с такими вот вещами
Grek 🇺🇦
круто, но как ты сказал выше - тут ясно что ничего не ясно
Aleksey
вот примеры использования https://github.com/search?q=mandatory+filename%3Amain.yml&type=Code
Aleksey
поиск по github тоже очень простая магия. используйте её.
Grek 🇺🇦
дякс
Anonymous
Подскажите зачем в документации рекомендуеться использовать loop а не with_items, не могу понять в чем преимущество
https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#defining-inner-and-outer-variable-names-with-loop-var c with_items это невозможно реализовать, т.к. with_items это плагин. Вам правильно советуют привыкать к loop, т.к. возможности шире.
Anonymous
готов "выслушать" альтернативные точки зрения. мол, вот John, Вы ошибайтесь и можно реализовать через with_items кейс, описанный в документации https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#defining-inner-and-outer-variable-names-with-loop-var
Sergey
Подскажите зачем в документации рекомендуеться использовать loop а не with_items, не могу понять в чем преимущество
Унификация. В новом синтаксисе по сути loop умеет работать только со списками, а словари в них тупо превращаются через dict2items. Ну и механика, на которой это работает, другая (то есть не LookupPlugin).
Sergey
@John554 тебе показалось, я не выражал своего мнения по поводу твоего высказывания, и тем более никак не выражал своего желания что-либо с тобой обсуждать.
Anonymous
просто товарищ @gecube сразу начал тебя звать. а так были странные сообщения от @Lamobot: "Вопрос странный, такие темы уже были здесь и заканчивались обычно RO каких либо рьяных отстаивателей своего мнения :)"
Anonymous
хотя обсуждать нечего
Anonymous
with_items или loop это не вопрос "вкуса". а вопрос возможностей.
Anonymous
у loop возможности шире
Denis 災 nobody
Вопрос странный, такие темы уже были здесь и заканчивались обычно RO каких либо рьяных отстаивателей своего мнения :)
Нормальный вопрос для новичка, я тоже не понимал сначала. Но потом доки прочитал.
Lamobot
готов "выслушать" альтернативные точки зрения. мол, вот John, Вы ошибайтесь и можно реализовать через with_items кейс, описанный в документации https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#defining-inner-and-outer-variable-names-with-loop-var
Реализовать такой кейс с циклами with_* можно. Так как loop_control работает и с ними. Тестовый плейбук пишется за 5 минут. Ну или просто посмотреть доку, в каких версиях ансибла появился loop_control и loop:
Lamobot
Anonymous
http://klikr.org/ff19448845fca7034626ae7398de.txt
признаю, что ошибался. извиняюсь.
⎈
Коллеги, а какие версии AWX поддерживаются/развиваются?
⎈
у меня 6.1.0 😞
manefesto
latest
manefesto
=)
⎈
у меня 6.1.0 😞
Нашёл Early versions of AWX did not support seamless upgrades between major versions and required the use of a backup and restore tool to perform upgrades. Users who wish to upgrade modern AWX installations should follow the instructions at: https://github.com/ansible/awx/blob/devel/INSTALL.md#upgrading-from-previous-versions
Pit
с 6.10 если будешь обновляться - тебе нужна только база, и надо понимать что они наглухо переколбасили названия контейнеров и схему деплоя
manefesto
У меня какой то древний мамонт 3х годичной свежести. Я просто использую его и не обновляю