George
Или кто-то пошутил над тобой и решил поломать файлы :-)
Fidelina
оно заклонилось
George
Ответ 🔥
Fidelina
# cd ~
# git clone https://github.com/openshift/openshift-ansible
# cd openshift-ansible
# git checkout release-3.11
Fidelina
вот так собственно добывались эти файлы
Александр
Александр
Не смог удержаться..
Oleg
комрадз, использую Ансибл с Дженкинсом.
в Дженкинсе делаю переменную (чек-бокс), пишу плэйбук и указываю в нем
when: var == true - делать одно действие, когда false другое, но when: var == false почему то не отрабатывает. что не так?
George
Fidelina
нет
George
Fidelina
ничего не правила, по доке запустила скрипт
Fidelina
---
- include_tasks: check_for_config.yml
vars:
l_openshift_node_group_name: "{{ node_group.name }}"
with_items: "{{ openshift_node_groups }}"
loop_control:
loop_var: node_group
Fidelina
вот на что ругается
George
Во-первых, True/Falsr vs true/false
George
Во-вторых, там же есть способ проверить андефайнд или установлена переменная
George
В третьих, ты передаешь переменную в ансибл как ? Через экстра Варс ?
George
Oleg
George
Вообще походе, что реально отступ поехал. Я бы поправил манифест руками и попробовал прогнать заново
George
Fidelina
Fidelina
Бектиками?
George
George
Oleg
George
Еще ты мог вдолбаться в это
George
https://stackoverflow.com/questions/37888760/ansible-when-variable-true-not-behaving-as-expected
Fidelina
````
Эм синтаксис вроде вернуй, проверила через всевозможные редакторы
Anonymous
Коллеги, подскажите а где определять эту политику https://docs.ansible.com/ansible/latest/reference_appendices/config.html#default-hash-behaviour
Sergey
Anonymous
если на хосте в ansible.cfg. указать hash_behaviour = merge это нормальная практика ?
Sergey
Строго говоря - нет, т.к. тогда могут испортиться другие проекты. Именно поэтому не рекомендуется для решения проблем конкретного проекта заносить такие настройки в глобальные конфиги.
Anonymous
ну тут скажем не то что у меня выбора нет, но сказано делать имено через такой подход
Sergey
Anonymous
в обще конечна фраза намекет, что это содомия какая та) но раз партия сказала надо, комсомол ответил есть We generally recommend not using this setting unless you think you have an absolute need for it, and playbooks in the official examples repos do not use this setting In version 2.0 a combine filter was added to allow doing this for a particular variable (described in Filters).
Anonymous
еще немного об этом же поведении
Timur
Fidelina
Oleg
Anonymous
если я выставляю merge и имею следующий group_vars/all/vars.yml
firewall:
open_ports:
- { port: 10050, protocol: tcp, source: 0.0.0.0/0} а на уровне окружения добавляю еще пару портов так firewall:
open_ports:
- { port: 80, protocol: tcp, source: 0.0.0.0/0}
- { port: 443, protocol: tcp, source: 0.0.0.0/0} ансибл корректно это смержит ?
Timur
Timur
Как минимум
Anonymous
В обще наверное скажу что хочу сделать, так будет проще, может кто подскажет как сделать правильно
Anonymous
Хочу на уровне group_vars/all задавать какие то базовые вещи при этом это важно, задается это вида varsname:
- parametr: aaa. А ниже в плейбуках добавлять недостающие параметры
Anonymous
лучше всего это можно проилистрировать на примере nginx, где базовые параметры заданы для всех одинаковые, а доп параметры переопределны ниже. Проблема в том, что из-за требований определять группами, как в примере выше, то перезаписывается весь блок vars, что и вызывает боль. А делать varsname_parametr: aaa у нас нельзя
Fidelina
Как можно однострочником проверить переменную?
Fidelina
ansible -i inventory/hosts OSEv3 -m debug "var=openshift_node_groups"
Fidelina
вот так не отрабатывает
Leonid
Leonid
Переменная в hosts?
Leonid
ansible -i hosts all -e @external_vars.yml -m debug -a "msg={{myvar}}"
centos | SUCCESS => {
"msg": "hello"
}
Fidelina
ansible -i inventory/hosts all -m debug -a "msg={{openshift_node_groups}}"
Fidelina
Fidelina
Leonid
Dmitrii
Есть template.j2
Есть group_vars => all.yml
В нем есть
core_data:
web_host_prefix: api
master_database_port: "3306"
common:
default_branch_name: stage
default_image_tag: latest
eu-central-1:
region_name: frankfurt
region_cache: "true"
time_zone: Europe/Berlin
В template.j2 хочу сделать, что -то типа:
В переменной ansible_ec2_placement_region, текущий регион инстанса (eu-central-1)
{% set core = core_data|combine(common, ansible_ec2_placement_region ) %}
Но:
FAILED! => {"changed": false, "msg": "AnsibleFilterError: |combine expects dictionaries, got 'eu-central-1'"}
Как правильно сделать, чтобы не стринга подставлялась, а хеш из group_vars?
George
George
Все же написано
George
Что такое core_data ?
Dmitrii
George
Кмк, это не дикт
George
Я уж не говорю про то, что у тебя в комбайн залетает другой параметр
George
Попробуй с http://toroid.org/ansible-combine начать
George
George
Либо по ссш, по ключу, но ключ должен у текущего юзера лежать в .ssh
Gleb
геморойно как то не для локалхоста
George
Потому что это словарь
George
Кажется догнал
George
Ты хочешь из Варс вытащить словарь. Имя которого в переменной
Dmitrii
верно
George
Что-то типа globals[ansible_ec2_placement_reg]
George
Хз как спросить у ансибла весь массив переменных
George
У меня дежа вю
Dmitrii
Есть template.j2
Есть group_vars => all.yml
В нем есть
core_data:
web_host_prefix: api
master_database_port: "3306"
common:
default_branch_name: stage
default_image_tag: latest
eu-central-1:
region_name: frankfurt
region_cache: "true"
time_zone: Europe/Berlin
В template.j2 хочу сделать, что -то типа:
В переменной ansible_ec2_placement_region, текущий регион инстанса (eu-central-1)
{% set core = core_data|combine(common, ansible_ec2_placement_region ) %}
Но:
FAILED! => {"changed": false, "msg": "AnsibleFilterError: |combine expects dictionaries, got 'eu-central-1'"}
Как правильно сделать, чтобы не стринга подставлялась, а хеш из group_vars?
Если кому-то интересно, то решение:
{% set core = core_data|combine(common, lookup('vars', ansible_ec2_placement_region) ) %}
@gecube