Ivan
Ну не знаю, там 1к строк, пусть лежит отдельно
Timur
options: i: inv.yml оно добавляется
Так можно просто: inventory: group_vars: ... и т.п.
Timur
Зачем отдельный файл?
Ivan
Я не готов ответить на этот вопрос, но меня это устраивает пока
Alex
https://github.com/ansible/ansible/pull/63194 а можно как то понять, будет ли оно бекпортировано для 2.7?
Timur
Учитывая, что уже вышел релиз 2.9
Timur
Какой смысл оставаться на 2.7?
Timur
Обновляйтесь до 2.8 как минимум
Alex
ну это надо будет все плейбуки прогонять на совместимость с 2.8, а это очень хлопотно на данный момент. В планах уже есть переход на 2.8
Alex
[DEPRECATION WARNING]: DISPLAY_SKIPPED_HOSTS option, environment variables without "ANSIBLE_" prefix are deprecated , use the "ANSIBLE_DISPLAY_SKIPPED_HOSTS" environment variable instead. This feature will be removed in version 2.12. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. а как эта опция должна выглядеть в ansible.cfg в 2.8?
Alex
я не использую переменную окружения
Alex
https://docs.ansible.com/ansible/latest/reference_appendices/config.html здесь говорится Ini Key: display_skipped_hosts
𝚔𝚟𝚊𝚙𝚜
напомните плз как называется функция которая позволяет подставлять значения вместо true и false?
𝚔𝚟𝚊𝚙𝚜
Не, там было что-то такое: {{ some_var | func('enabled', 'disabled') }}
𝚔𝚟𝚊𝚙𝚜
ternary()
оно, спс!
Alexander
"internet_gateways": [ { "attachments": [ { "state": "available", "vpc_id": "vpc-54321" } ], "internet_gateway_id": "igw-12345", "tags": [ { "key": "Name", "value": "PROD" } ] } ], Как мне отсюда вытащить internet_gateway_id на основании vpc_id? Варианты, которые не работают: "igw_info.internet_gateways | selectattr('attachments.vpc_id', 'equalto', item.vpc_id) | list": "VARIABLE IS NOT DEFINED!: 'list object' has no attribute 'vpc_id'" "igw_info.internet_gateways | selectattr('attachments[0].vpc_id', 'equalto', item.vpc_id) | list": "VARIABLE IS NOT DEFINED!: 'dict object' has no attribute 'attachments[0]' "igw_info.internet_gateways | selectattr('attachments | first | vpc_id', 'equalto', item.vpc_id) | list": "VARIABLE IS NOT DEFINED!: 'dict object' has no attribute 'attachments | first | vpc_id'"
Alexander
Использую https://docs.ansible.com/ansible/latest/modules/ec2_vpc_igw_info_module.html#ec2-vpc-igw-info-module для получения igw_info
Alexander
+ ещё один элемент списка с информацией по другому vpc
Alexander
ok: [localhost] => { "changed": false, "internet_gateways": [ { "attachments": [ { "state": "available", "vpc_id": "vpc-54321" } ], "internet_gateway_id": "igw-12345", "tags": [ { "key": "Name", "value": "PROD" } ] }, { "attachments": [ { "state": "available", "vpc_id": "vpc-67890" } ], "internet_gateway_id": "igw-09876", "tags": [] } ], "invocation": { "module_args": { "aws_access_key": null, "aws_secret_key": null, "debug_botocore_endpoint_logs": false, "ec2_url": null, "filters": {}, "internet_gateway_ids": null, "profile": null, "region": null, "security_token": null, "validate_certs": true } } }
Aleksey
Зачем отдельный файл?
потому что этот файл отдельно формируется
Aleksey
и логика его формирования довольно не тривиальна
NM
Sed ?
Alexander
Через json_query нужно
Это же отдельно ставить надо, так?
Alexander
Sed ?
ансибловенько :)
NM
Да можно через jq штатный
NM
ансибловенько :)
Иногда проще shell: sed ....
Alexander
Попробовал ещё так: - name: Gather igw info ec2_vpc_igw_facts: region: "{{ item.region }}" filters: "attachment.vpc-id": "{{ item.vpc_id }}" register: igw_infos with_items: "{{ vpc }}" - name: Print debug debug: var: igw_infos.results | selectattr('invocation.module_args.filters.attachment.vpc-id', 'equalto', item.vpc_id) | list Так он не может читать ключи с точкой в имени) Но, зачем-то, для удобства, авторы модуля решили, что ключи должны быть именно с точкой в имени ))
Alexander
Хотя, это стандартный AWS фильтр, но от этого не легче
Alexander
Мне вообще маршрут к igw нужно добавить - может есть легче способ? )
Alexander
Зашёл с другой стороны: - Собрал с модуля ec2_vpc_igw вывод. - Обработал его. Там по-человечески в словаре первоуровневом vpc_id и igw_id
Alexander
Хаха. Удалить AWS VPC с подсетями с помощью ec2_vpc_net нельзя :)
Собсна, вот ) https://github.com/ansible/ansible/issues/64406
Alex
Это же отдельно ставить надо, так?
нет, но для его работы необходим питоновский модуль jmespath
Alex
Хочу конкретный - тот, который приаттачен к vpc_id vpc-54321
попробуй что то типа internet_gateways[].{vpc_id: attachments[].vpc_id, igw_id: internet_gateway_id} ну а дальше уже отфильтруй по id
Sergey
попробуй что то типа internet_gateways[].{vpc_id: attachments[].vpc_id, igw_id: internet_gateway_id} ну а дальше уже отфильтруй по id
Вот это какая-то реально страшная конструкция мелькнула, она на каком языке?
Alex
это jmespath
Alex
который собсно используется в json_query
Sergey
Ясн.
Alex
с таким фильтром internet_gateways[].{vpc_id: attachments[0].vpc_id, igw_id: internet_gateway_id} на выходе получим [ { "vpc_id": "vpc-54321", "igw_id": "igw-12345" }, { "vpc_id": "vpc-67890", "igw_id": "igw-09876" } ]
Max
который собсно используется в json_query
который требует библиотеку установить там, где json_quey бежит... дополнительная зависимость.
Alex
выбрать нужный igw_id уже дело техники
Sergey
Что только люди не сделают, лишь бы не писать код 😊
Max
ну да, я об этом писал выше
в свое время, эта либа не была частью rhel, и поэтому в анальных корпорах его избегали.
Alex
хз мы сейчас тестируем на RHEL 6/7/8 везде она есть
Alex
Вот это какая-то реально страшная конструкция мелькнула, она на каком языке?
кстати aws cli тоже использует jmespath. Не так удобно конечно как тот же jq, но все же
Alex
в смысле
Sergei
братишки, вопрос вам, я погуглил, чесно. Вообще хочу что то типа when: variable name like %AZAZA_% .
Sergei
вообщем, я заведом не знаю имя переменной, только ее первые буквы %)
Alex
имя или значение?
Timur
Какая задача решается?
Timur
https://stackoverflow.com/a/36497471 ?
Какая задача решается?
Alexander
Какая задача решается?
Человек же написал - LIKE хочет
Timur
Очень хочется программировать на yaml?
Alexander
Очень может пригодится во многих случаях
Отделение Bereke Bank
Senior YAML Developer
Sergey
LIKE? в инфраструктуре? ты серьёзно?
Alexander
Ну это как обычно - претенциозно и бесполезно
Alex
Полный код как выглядит?
я же привел пример, тебе только остается выдрать нужный igw id igw_infos.results | json_query('internet_gateways[].{vpc_id: attachments[0].vpc_id, igw_id: internet_gateway_id} | [?vpc_id == 'vpc-54321'].igw_id')
Alex
и?
Alex
религия не позволяет?
Alexander
И зависимость
Alex
json_query не надо отдельно ставить