Dr. L.S.Dee
добавить в смысле или есть ли в group_vars?
Вместо хостварс, полагаю. А так получается, что сабж ищет хост.
Sergey
lf
как задача выглядит изначальная?
Artem
как задача выглядит изначальная?
нужно выцепить hostname из группы хостов discount_api и запустить таску на создание доменных групп на местном контроллере домена в имени группы должен присуствовать hostname хоста из группы dicount_api
Dr. L.S.Dee
Ну в общем, s/hostvars/groups, как-то так. Группа-то где задана?
Dr. L.S.Dee
Как говорила Гаечка, "Это должно сработать".
Sergey
Dr. L.S.Dee
брать с 1 хоста
А получается (предположим, мы все-таки заменили хостварс на групс), что в OrganizationalUnit 'OU=Linux allow SSH connect,OU=Groups,DC=ex,DC=loc' будет создана глобальная группа безопасности с именем "$hostName_ssh" для каждого хоста "$hostName" в инвентори-группе 'discount_api'.
Artem
Разодрался уже , спасибо )
Dr. L.S.Dee
А есть что-то наподобие того, как работает ifShouldProcess в PoSh? Т.е. если запускаем команду 'Do-SomeWeirdThing -Param1 foo -Param2 bar -WhatIf', то вместо выполнения получаем вывод-симуляцию, где описывается, что бы у нас произошло, если бы ключик '-WhatIf' мы не поставили. Раскрываются все переменные, что из них получается и т.д. Ну, эт ежели разработчик очередного PS-модуля удосужился вписать такой функционал. Некоторые справку-то не пишут.
Dr. L.S.Dee
Ага, нашел. Он же 'Dry run', спасибо.
Peter
Коллеги, всем хорошего дня! Обновился до ansible 2.9.3 и при выполнении ansible all -m ping неактивные хосты показывает как SUCCESS. Проблема как с интепретатором python3.6 как и python2.7. Кто сталкивался?
Ucaby
Что этот бот себе позволяет)
[IPT] Dmitry
ребят, а есть какие-то общие рекомендации по "тюнингу" плэя? например, у меня плэй один выполняется под 30 минут. не скажу что он лёгкий, но хотелось бы понять как правильно определять узкие места и по возможности их оптимизировать
UglyKoyote
в конфиге можно включить замер времени по каждой таске
UglyKoyote
думаю это как минимум надо сделать. ну а дальше уже анализировать почему именно конкретный плей так "тяжело" идет
[IPT] Dmitry
да, я это уже сделал
[IPT] Dmitry
что ещё можно чисто по производительности смотреть? как клиента, так и сервера
UglyKoyote
ну тогда можно смотреть на стороне сервера что происходит. может диски проседают, может по цпу затык
UglyKoyote
iotop/iostat/top
Alexander
Есть инструмент, который в разы ускорит работу, не могу найти только
[IPT] Dmitry
ок, я понял, метрики с кореляцией
Alexander
Да, он точно! Не?
UglyKoyote
а что он даст - если к примеру у него просто диски захлебываются?
UglyKoyote
ему для начала надо понять что на стороне хоста происходит
[IPT] Dmitry
видимо я про всё знаю. просто думал, может какой прям крутой и волшебный инструмент есть для анализа? 😄
UglyKoyote
есть :)
zhag
А есть ли каой-то путь делать автоматическую документацию? Вот есть у меня переменная и я хочу чтобы допустим из комментов она лепила это в README.md
UglyKoyote
но он очень дорогой.. и называется "опыт"
Gleb
А есть ли каой-то путь делать автоматическую документацию? Вот есть у меня переменная и я хочу чтобы допустим из комментов она лепила это в README.md
https://github.com/pycontribs/ansible-readme еще недавно было, оно даже пока работает, но когда сломается чинить некому
zhag
Спасибо посмотрим
Aleksey
господа, а vars_files оно групповые варсы ?
Logan
оно для плея.
Logan
или я не понимаю вопроса
Aleksey
оно будет на плее в котором много групп выставлено для всех хостов или только для группы?
Aleksey
Видимо для всех
Aleksey
VARIABLE_PRECEDENCE. о!
Aleksey
Короче этот ваш ансибл не гибкая поделка. хочу сделать так playbook.yaml ./group_vars/... ./<<env_name>>/group_vars/ ./<<env_name>>/group_vars/ но так низя
Отделение Bereke Bank
у тебя должно быть свое инвентори для каждого env_name
UglyKoyote
интересно.. как я один плейбук юзаю на 3 окружения.. без "негибкости ансибла"
UglyKoyote
видимо наркоман и мне это кажется
Radik
тихо давайте дальше почитаем
Aleksey
у тебя должно быть свое инвентори для каждого env_name
должно быть. но я не хочу в нем хранить 2 сотни переменных
Aleksey
я хочу https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#directory-layout но к нему group_vars на верхнем уровне
UglyKoyote
ну ты хочешь странного, но виноват ансибл. я верно понял?
UglyKoyote
ибо как я понял - у тебя есть группа серверов, и 2 разных окружения
Aleksey
почему я хочу странного ?
Aleksey
у меня есть окружения в которых большая часть пременных одинакова.
Aleksey
они структурированы по группам.
UglyKoyote
так..
UglyKoyote
между окружениями они ведь тоже меняются?
Aleksey
теперь внутри группы для окружения у меня есть отличия которые нужно положить в group_vars этого окружения
Aleksey
проблема в том что я не могу повлиять на https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable inventory group_vars/* [3] playbook group_vars/* [3]
Aleksey
в моём случае они должны быть ровно наоборот
Отделение Bereke Bank
хуярь общее общим extra_vars-ом
Отделение Bereke Bank
Aleksey
это совсем днина
Aleksey
ровно как и vars_file
Aleksey
ровно как и симлинки
Aleksey
вот как выглядит дерево сейчас . ├── My-beta │ ├── group_vars │ │ ├── my.yaml │ │ ├── grafana.yaml ... │ └── inventory.ini ├── ansible.cfg ├── deploy.yaml ├── group_vars │ ├── all.yaml │ ├── grafana.yaml ├── roles ... ├── My-dev │ ├── gcp-inventory.yml │ └── group_vars │ ├── gcp.yaml │ ├── grafana.yaml ... ├── My-prod │ ├── gcp-inventory.yml │ └── group_vars │ ├── gcp.yaml │ ├── grafana.yaml ... └── My-rc ├── gcp-inventory.yml └── group_vars ├── gcp.yaml ├── grafana.yaml
Aleksey
оно гдето выглядит не логичным ? как сделать его логичным ?
Aleksey
вот только бы "странное" писать.
Sergey
я хочу https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#directory-layout но к нему group_vars на верхнем уровне
Это - первый вариант из двух layouts, и он заставляет помнить о страданиях.
Sergey
inventory не должны иметь общего, иначе это общее можно занести в роль.
Aleksey
инвентори ничего общего и не имеют
Aleksey
короче лучшее решение это симлинк playbook-а в директорию с енвайроментом
Aleksey
оно корректно работает
Александр
есть у меня такая вот конструкция ok: [docker-preprod-301] => { "hosts | json_query('* | [?env==`' + host_options.env + '`] | [?env==`preprod` || dc==`' + host_options.dc + '`].name')": [ "docker-preprod-302", "docker-preprod-204", "docker-preprod-205", "docker-preprod-203", "docker-preprod-301", "docker-preprod-103" ] } ok: [docker-305] => { "hosts | json_query('* | [?env==`' + host_options.env + '`] | [?env==`preprod` || dc==`' + host_options.dc + '`].name')": [ "consul-302", "docker-304", "docker-302", "docker-301", "docker-303", "docker-305", "nomad-master-301", "consul-303" ] } Мне надо дополнить выражение, чтобы на выхлопе получить hostvars[item].ansible_host каждого (там ip). when не подойдет, ибо шаблон {% for ...%} не хотелось бы использовать
Александр
ответ: hosts | json_query('* | [?env==`' + host_options.env + '`] | [?env==`preprod` || dc==`' + host_options.dc + '`].name') | map('extract', hostvars) | list | json_query('[].ansible_host')
Александр
или hosts | json_query('* | [?env==`' + host_options.env + '`] | [?env==`preprod` || dc==`' + host_options.dc + '`].name') | map('extract', hostvars, 'ansible_host') | list
Александр
разница в том, что первый вариант ругнётся падаем с ообщением если вдруг элемента нет в hostvars (не актуальный конфиг), а второй "hosts | json_query('* | [?env==`' + host_options.env + '`] | [?env==`preprod` || dc==`' + host_options.dc + '`].name') | map('extract', hostvars, 'ansible_host') | list": "VARIABLE IS NOT DEFINED!" но мне он подошёл, т.к. вставил проверку выше этого выражения
Dmitry
Привет. Немного не понятно из доки, действует ли any_errors_fatal с уровня плейбука на блоки? Или каждому блоку нужно тоже указать any_errors_fatal персонально даже если оно в плейбуке указано?. А то у меня оно включено, но плейбук не останавливается...
Roman
Всем привет. Подскажите как можно проверить есть ли подстрока в переменной в которую читаю ip r? Моя задача на хостах проверить наличие роута