Konstantin
- name: Fill service_docker_portmapping variable
set_fact:
service_docker_portmapping: "{{ service_docker_portmapping }}+ [ '127.0.0.1:{{ item.int_port }}:{{ item.ext_port }}' ]"
loop: "{{ ['service_'~Environment~'_ports'] }}"
Sergey
Не заработает
Konstantin
вроде зашло loop: "{{ hostvars[inventory_hostname]['service_'~Environment~'_ports'] }}"
Sergey
Вот так - да. Хостварс там не зря ;-)
Timur
Sergey
Timur
Всем привет.
Я снова с немного странным вопросом. Он обусловлен инфраструктурным legacy.
у меня в group_vars/all декларировано три переменных
service_dev_port , service_test_port, service_prod_port
сами окружения (dev,test,prod) уже разбиты на отдельные inventory, в каждом inventory есть переменная Environment и равна соотв dev, test, prod в зависимости от окружения. Но очень часто у нас бывает ситуация, что при тестировании (инвентори test) используются сервисы из dev ( и наоборот, не спрашивайте почему так, legacy очень жетский и олдскульный).
Мой вопрос такой, я могу как-то в роли сделать вызов a la: service_port = service_{{ Environment }}_port ?
Надеюсь понятно объяснил вопрос =)
Лучше загнать service_dev_port , service_test_port, service_prod_port в один список и селектить нужный
Timur
?
Динамические имена переменных не стоит использовать без необходимости
Sergey
Timur
Эту задачу можно решить фильтрацией списка
Timur
А не динамической переменной
Tadeusz
Timur
И его сложно поддерживать
Timur
В случае с фильтрацией все гораздо прозрачнее
Tadeusz
А, питон)
Konstantin
Timur
Например так:
'{{ service_port_list | select("match", env) | first }}'
Sergey
Timur
Sergey
Было три переменных, а ты отфильтровал список. Плюс по строке, которая встречается в любом месте значения элемента списка. Поэтому лол.
Konstantin
Не явно
NS 🇷🇺
всем привет.
назрел вопрос, можно ли как то получить в playbook имя группы родителя
[group:children]
group1
group2
хочется в playbook получить значение group
Asgoret
Вопрос знатокам. Как написать if если default false?
{% if lb %} <- default (false)
name: nginx-simple <- expected
{% else %}
name: nginx-balancing <- in fact
{% endif %}
Были испрованы следующие конструкции:
if|d()|bool
if is false
if|default()
if|default(false)|bool
if|default(false)|bool == true
if == true
if == 'true'
Timur
𝔹𝕠𝕣𝕚𝕤
Vladislav 👻
разве регистр играет роль?
Vadim
Asgoret
🤦♂ я не подумал просто поменять значения местами в списке
Vadim
Victor
Asgoret
Asgoret
Vladislav 👻
Vladislav 👻
можно как-то обратится к словарю в текущем списке?
Victor
{{item.name}}
Vladislav 👻
вариант {{name}}-{{version}}.jar проканает?
Vladislav 👻
для jar_name
Vladislav 👻
цикл пойдет в темплейт
Vladislav 👻
наверно проще сразу в темплейте переписать
Victor
{% for s in java_service_module %}
{{s.name}}
...
Или типо того, не вижу проблем с теплейтами
Vladislav 👻
нее, у меня на каждый элемент свой темплейт
Vladislav 👻
и посмотрел внимательно, это пойдет в другой варс
Victor
т.е. ты хочешь в ямле зареференсить переменную в текущем элементе? Я как-то хотел и у меня не вышло, вроде бы такое невозможно.
Vladislav 👻
печаль
Vladislav 👻
ладно, буду думать, спасибо
Victor
Но ты можешь это сделать в темплейте, елси будешь обходить ямл
Vladislav 👻
это я понял, но это не заходит
Asgoret
@vrutkovs @ekho_0 если поменять местами, работает коррект (simple c balancing)
𝔹𝕠𝕣𝕚𝕤
угу, невнимательно посмотрел исходный вариант
Vladislav 👻
глупый вопрос, если я в loop прописываю loop_var, то item уже не будет работать?
Vladislav 👻
ок
NS 🇷🇺
Vladislav 👻
мне стало интересно, а зачем?
Vladislav 👻
и самое главное, как отличать вышестоящего родителя?
Jungo
коллеги добрый вечер! подскажите пож-та
планирую перевод текущей управляемой вручную структуры в ansible
и у меня инвентори лист хранится в гугл щитах вот так
project HTTP_auth server location VM/CT(OS) VM/CT IP port forwarding/service software role DB FQDN SSL target repo manager developer group cpu/RAM/HDD backup time/deep description start date due date price
и там около 50 проектов
то есть в инвентори листе есть побочные ячейки такие как цена например - которые особо ансидлу и ненужны
тем не менее хочется одного источника для хранения информации и чтобы ансибл мог подтягивать данные такие как
project server port forwarding software и прочие
Victor
matt
инвентори лист в гугл шит это пять
NS 🇷🇺
Victor
Просто если тебе нужно именно название группы у хостов в другой группе, то скорее всего ты что-то делаешь не так
Lex
Народ. Сегодня пол дня убил - чтобы скрестить lookup(query), loop и add_host есть у кого рабочее решение подобной хрени
Timur
Lex
Или может проще так на пальцах...есть несколько групп хостов..у некоторых групп в group_vars есть переменная, в которой содержится имя сервера. Вот надо пройтись по всем group_vars. Собрать из этой переменной имена серверов и на них сделать таск
Lex
Можно конечно это решить через local shell...но хотелось без костылей ))
Lex
Victor
Из подводных камней, которые я вижу, оно может обломиться если такой переменной нет
Victor
Или, возможно, все еще проще.
delegate_to
Jungo
инвентори лист в гугл шит это пять
там нет секретной информации, просто описание проектов с внутренними ip адресами
цель этого дальнейшая обработка через гугл скрипт этой ифнормации для отправки разработчикам и менеджерам, чтобы они могли понять все настройки проекта
а когда эту портянку я запихаю в инвентори лист ансибла - пользоваться потом этим будет не очень удобно