Антон
мне кажется это не то. у меня уже есть статический инвенторий, мне просто нужно понять как можно по нему пройтись циклом
Антон
у меня есть в инвентории имя хоста, почему я не могу его юзать?
Sergey
Да потому, что статический инвентори обычно и делится на группы статически же. Юзать можешь, только сам подход некорректен: Ансибл - про инфраструктуру как код. А то, что описываешь ты, напоминает "оно_само"
Sergey
Типа - по хостнейму раскидывать.
Timur
Группа all есть всегда :)
Sergey
Факт 😁
Timur
Типа - по хостнейму раскидывать.
Это нормально. Но более релевантно - по тегам ресурсов, например
Timur
Скажем, получаешь набор инстансов из амазона, а группы создаешь в соответствии с тегами, которые на них висят
Timur
Например, инфра у тебя создается терраформом, он же и теги назначает. А провижн на инфру потом идет ансиблом
Sergey
Скажем, получаешь набор инстансов из амазона, а группы создаешь в соответствии с тегами, которые на них висят
Это - классика динамического инвентори. Но в изначальной задаче есть статический инвентори и хосты, а группы - потрачены.
Timur
Ну да. Это разновидность динамики для инвентаря
Timur
Инвентарь вполне может быть смешанный
Антон
Да потому, что статический инвентори обычно и делится на группы статически же. Юзать можешь, только сам подход некорректен: Ансибл - про инфраструктуру как код. А то, что описываешь ты, напоминает "оно_само"
судя по всему я не совсем корректно объяснил задачу. есть статический инвентори в котором одним из параметров идет доменное имя инстанса. мне на основании этого имени нужно создать группу в АД, после чего сделать эту группу админом на заданном хосте есть два пути: в лоб - ставить на каждом хосте плагин для работы с АД подключиться к спецмашине с установленным модулем ps, всять из статического инвентория имена и создать группы
Антон
как-то так
Timur
Запускаться со статики, а потом на ходу добавлять динамику
Антон
https://docs.ansible.com/ansible/latest/modules/group_by_module.html Это не подоходит?
прочитал, но не осознал как это работает =((((
Timur
)))
Timur
прочитал, но не осознал как это работает =((((
Угадал все буквы, но не смог назвать слово (c)
Антон
hostvars - вот решение судя по всему моей проблемы =)
manefesto
Проблема, делаю провижен, разворачиваю nginx, деплою конфиги, и сертификаты Вопрос по сертифкатам, как мне их шифровать ? Вроде vault есть, но как его использовать в плейбуке не могу понять
Антон
Проблема, делаю провижен, разворачиваю nginx, деплою конфиги, и сертификаты Вопрос по сертифкатам, как мне их шифровать ? Вроде vault есть, но как его использовать в плейбуке не могу понять
- name: create id rsa local_action: module: copy content: "{{ id_rsa }}" dest: "/tmp/id_rsa" mode: '0600' я вот так доставал из волта приватный ключ для подключения к хостам
manefesto
подскажи с какими парамтерами запускал, и где хранится переменная id_rsa ?
manefesto
Нашел вроде
Антон
переменная id_rsa - это просто в ансибл волте приватный ключ. запускал с параметром передачи пароля от волта
manefesto
https://blog.confirm.ch/deploying-ssl-private-keys-with-ansible/
manefesto
спасибо
Антон
это просто копирование файлов. если тебя волнует безопасность - не лучший ход
manefesto
Меня так устроит, лучше чем в репе хранить в открытом виде
#Rλatan
Как то можно повторить конструкцию типа: if a == ture; then if b == true: then if c == true: then Do some nice stuffэто не работает напрмер when: - var1.var2 is defined - var1.var2Если var2 не определена то вылетает ошибка на следующей проверке var1.var2 что словарь не содержит айтема var2
#Rλatan
потому что надо a == true а не ture :D
да как то насрать) when оператор на такой умный в Ansible
#Rλatan
if a && b && c then
это эквивалентно when: - var1.var2 is defined - var1.var2что фелится если
Alex
> Если var2 не определена то вылетает ошибка на следующей проверке var1.var2 что словарь не содержит айтема var2 не может оно фейлится
Alex
если var2 не определена, то логическое И не сработает и все
#Rλatan
var1 - is defined var1.var2 - not exists / defined по ходу when сначало рассрывает шаблон потом уже проводит проверку так ак var1.var2 не существует он выплевывает ошибку об этом не доходя до фактических проверок
Alex
- name: Set facts set_fact: dict1: { 'key1': 'val1', 'key2': 'val2', 'key3': 'val3' } - debug: msg="XXX" when: - dict1.key1 is defined - dict1.key1 == 'val1' - dict1.key2 is defined - dict1.key2 == 'val2' - dict1.key3 is defined - dict1.key3 == 'val3'
Alex
если удалить любой из ключей, то таск скипается
Div
добрый день, коллеги. столкнулся со странным. пытаюсь добавить адреса свежесозданных виртуалок в инвентарь с помощью add_host и получаю дебагом VALUE_SPECIFIED_IN_NO_LOG_PARAMETER в группе... можете просветить, как так?
Div
у коллеги из этой группы все работает... проверялось на разных версия как ансибля так и питона и даже на awx
#Rλatan
@Lex_hha спасибо, да переставил проверки местами и прошло без остановок, только скипалось где нужно, when проверяет одно условие за другим не все сразу :) хотел найти в сорцах только во в каком разделе искать...
Div
6.7.3 пробовал и более ранние версии 6.5 и 6.0.0
Alex
Не надо так
А есть способ реализовать логическое И более элегантно?
Timur
А есть способ реализовать логическое И более элегантно?
А более конкретно как задача выглядит?
username
или var2 это переменная и var1?
username
вобще да, согласен с Тимуром не достаточно входных данных
[IPT] Dmitry
loop: - item5 - item6 - item7 сортирует как попало item6 item7 item5 можно как-то вообще сортировку отключить и чтоб порядок брался прям как в листе идёт?
#Rλatan
when: - var1.var2 is defined - var1.var2passed when: - var1.var2 - var1.var2 is definedfailed
Victor
Емпип, если лист не сортировать то он так и идет.
Ну и тесты этоже говорят, несоритрованый лист идет как есть, сортированный сортируется
[IPT] Dmitry
пригляделся, он идёт зеркально наоборот 🤔 попробую reverse
Alex
может кто поделиться способом проверки, что переменная является валидным json объектом? Ну кроме как - name: Validate JSON set_fact: is_valid_json: {{ var1 | from_json }} ignore_errors: yes register: result - debug: msg="var1 is valid JSON" when: not result.failed
Daniel 🇺🇦🍁🇨🇦
Ребят, всем привет. Вопрос, можно ли в gorup var вместо ansible_ssh_pass юзать авторизацию по ключу\сертификату? Чтобы пароль не вносить в sudoers на сервак и тд (бывало такое, что когда запускаешь плейбук, то пермишины или миссинг судо пасс)
Daniel 🇺🇦🍁🇨🇦
Мда, я хлебушек, спасибо
Hello
Всем привет, как лучше сделать - есть папка, в ней подпапки, в них файлы. Как адекватно скопировать в такой же структуре?
Андрей
Делаешь из всего этого архив, переносишь в /tmp, разархивируешь в нужную директорию
Hello
rsync?
через ansible, думал в тупую написать, но и на этом моменте у меня есть трудности. может кто подскажет. Как переменную и стринг заставить работать в loop? item.stat.exists не видит stat
Hello
Луп должен быть или лист или диснт (но последнее не точно) Иначе как делать цикл?
Но допустим я могу переместить переменную home_folder непосредственно в path. Но непонятно как использовать item.stats
Tadeusz
jq '.result | .[].id' как такое провернуть в ansible'е? дергаю из uri json и вот нужен value id'шника