bebebe
хотя, этот жи yaml, можно его залоадить, сделать |from_yaml, поправить структуру targets, и заново сдампить
как-то так: - name: include include_vars: file: prometheus.yaml name: prometheus delegate_to: localhost run_once: true - name: replace set_fact: msg: "{{ prometheus.test[item|int].static_configs}}" with_sequence: start=0 end={{ prometheus.test|length|int - 1}} delegate_to: localhost run_once: true
bebebe
печально конечно выходит
Udjin
то есть заменило айпишник во всех targets на айпишник хоста из тестовой группы
Udjin
да я не обвиняю, просто внимательно плей не прочитал
simplemice.eth
ну если что, валите все на меня
/история про три конверта/
Денис
кто-нибудь на память помнит модуль ансибла, в котором есть параметры, которые нельзя вместе указывать одновременно? желательно виндовый. Хочу в коде глянуть как сделано, чтобы так же сделать
Денис
а то полистал сейчас с десяток - не нашел такого
Vlad
module = AnsibleModule( ... mutually_exclusive=[ ['password', 'token'], ], ...
Udjin
ну если что, валите все на меня
оно заработало. Финальный вид плея вот такой: https://pastebin.com/BNX3cy0F теперь нужно понять, как сделать так, чтобы плей работал только когда в list больше одного айпишника
Udjin
и да, про пиво я серьёзно)
bebebe
ну вот и закончились ваши трехденвные мучения, у всего чата отлегло
bebebe
а говорили что аншибл - это просто
bebebe
обманщики
Денис
Я такое писал. Сейчас гляну.
нашел такое в модулях, вроде норм If (($password_expired -ne $null) -and ($password_never_expires -ne $null)) { Fail-Json $result "password_expired and password_never_expires are mutually exclusive but have both been set" }
Sergey
кто-нибудь на память помнит модуль ансибла, в котором есть параметры, которые нельзя вместе указывать одновременно? желательно виндовый. Хочу в коде глянуть как сделано, чтобы так же сделать
mutually_exclusive = [ ['exact_count', 'count'], ['exact_count', 'state'], ['exact_count', 'instance_ids'] ] вот это можно прям погуглить в каталоге с ансиблом
Денис
ну или сейчас через список поищу, да
Денис
спасибо
Денис
ну это модуль который уже в ансибле :)
Udjin
when: "{{ play_hosts | map('extract', hostvars, 'ansible_ssh_host') | list | length > 1 }}"
просто если б там был питон - это ещё куда ни шло. Но там какое-то программирование на псевдо-языке получается, а-ля терраформ
Udjin
сейчас попробую
Udjin
это jinja2
я ж и говорю, псевдо-язык
bebebe
вы приходите на канал ansible, и говорите что jinja2 это псевдоязык, и делаете это без уважения
Sergey
я ж и говорю, псевдо-язык
обсуждение Тьюринг-полноты Jinja2 не является темой данного канала 😉
Udjin
а говорили что аншибл - это просто
оно заработало. Господи, три дня, три дня... Финальный вид плея: https://pastebin.com/H5nzFETv
bebebe
оно заработало. Господи, три дня, три дня... Финальный вид плея: https://pastebin.com/H5nzFETv
отлично, переживал за вас и открыл по этому поводу пиво!
Vadim
этому каналу нужен стикер с "Вас посетила полиция lineinfile. Пока без штрафа, но впредь не нарушайте"
Udjin
отлично, переживал за вас и открыл по этому поводу пиво!
я держу всех в курсе) и не врите, не открыли. Я ведь не отблагодарил ещё)
Vadim
я переживал, но не открыл - из-под крана налили
bebebe
я переживал, но не открыл - из-под крана налили
надеюсь не из под водопроводного? :3
Udjin
лол)
Udjin
а у нас тут вообще нормального пива нету
Udjin
вот вином и приходится расслабляться
Vadim
хорошая идея, кстати
bebebe
этому каналу нужен стикер с "Вас посетила полиция lineinfile. Пока без штрафа, но впредь не нарушайте"
я переодически встречаюсь с такими задачами, где lineinfilie, скажем так выглядет логичнее задачи эти выглядят так: представьте есть роль которая менеджит конфиг какого-то сервиса из интернетов менеджмет допустим решается lineinfile в случае, если полностью темплейтизировать конфигурационный файл, то при изменении версии софта, нужно откуда-то брать темплейт для новой версии и подкладывать lineinfile позволяет этого избежать
bebebe
это правда задачи 2016/17 года, сейчас я уже их не встречаю
Vadim
в идеале это был бы темплейт в /etc/foo/conf.d
bebebe
да, понимаю.
bebebe
в случае с задачей прометея и его конфига в yaml, этот yaml можно подгурзить через include_vars в переменную например promethteus, поменять структуру переменной, и сдампить обратно. тоже самое касается и json (все что кушает include_vars)
Vadim
ну не знаю, yedit имхо самое разумное решение - ansible очень любит переформатировать переменные если заподозрит что это не просто строка
bebebe
ога, я очень удивился как ansible внутри устроны типы переменных, когда плотно работал с json_path.
Dmitry
Недавно обновился до 2.6. Как народ хранит пароли для разных vault файлов? до этого был export env var, но дико неудобно когда нужно много паролей...
bebebe
хранить пароли можно в hashicorp vault
Dmitry
пароли для Ansible Vault
Dmitry
тот кароль, чтобы расшифровать Vault
bebebe
да, я понимаю о чем вы
Dmitry
Так-то понятно. есть еще Credstash
Dmitry
но пока этого нет
Dmitry
то есть harshicorp для хранния паролией к vault?
bebebe
по идеи, пароли от vault должны храниться в CI (либо в SECRET'ах к джобам), либо в умах операторов
bebebe
в том числе можно дергать их из hashicrop vault
bebebe
для этого выписываются токены и механим более гибкий, можно шарить разным людям/джобам с разными параметрами (количество использования, время жизни токена и прочие ухищрения)
Dmitry
Да, ок. Но это не решает вопроса с наличием нескольких vault, и как это передать ansible?
Dmitry
--vault-pass?
Dmitry
и каждый раз менять откуда брать пароль
bebebe
у вас в одном запуске плейбуки использоваутся разные vault ? и вам нужно пропихнуть несоклько ключей?
Dmitry
(пока))
Dmitry
но при запуске другого плейбука другой среды - другой vault
bebebe
вы можете подложить пароль в файл и указать ansible брать оттуда пароль
Dmitry
это сейчас так и происходит. Поэтому вопрос в том, как производить смену?
Dmitry
dev/prod/...
bebebe
не понимаю вашей проблематики. попробуйте перед запуском класть пароль в файл и запускать плейбуку
Dmitry
Сейчас это переменная ANSIBLE_VAULT_PASS_FILE
bebebe
вы можете положить на уровень плейбуки файл ansible.cfg, в котором будет указать путь до файла с паролем
Dmitry
или как там... она задает путь к dev паролю. при этом плейбук запускается без необходимости передавать значение пути к файлу.
bebebe
vault_password_file = /etc/ansible/vault
Dmitry
к какому vault паролю этот путь? (dev/stg/prod/)?
Dmitry
так-то я могу указать dev, а при запуске на другой среде указывать принудительно путь к другим ключам
Dmitry
можно попробовать по бранчу вытаскивать называние среды и искать путь так...