Яша
его не нужно ставить вам руками
Яша
при установке чеголибо из данной репы, шоколад сам накатится
Яша
если я правильно понял
ranebull
Iw@n
Руками не ставлю, ставлю в плейбук
Iw@n
Ааааа
Iw@n
Простите. Понял) не дочитался. Спасибо)))
Timur
Яша
может возможно в нужном таске добавить параметр для вывода в файл?
Iw@n
Яша
Яша
у вас все решилось)
DjinN
Хранить в коде, передевать на целевую машину
Lamobot
Если добавить - lineinfile, если целиком hosts генерить, то template
Хранить - где угодно - переменные плейбука, хостов, групп итд
Vladislav 👻
Ilgiz
Доброго времени суток! Сегодня столкнулся с интересным поведением инвентарного файла, в общем есть плейбук который тянет имя группы и потом подставляет в путь чтобы далее записать инфу. Все хорошо работало пока не переименовал имя родительской группы в которую входят все остальные группы, после небольшого дебага заметил прямую зависимость от алфавита, т.е.
[aaaa]
host1
[bbbb]
host2
[cccc]
host3
[dddd]
host4
[cc_group:children]
aaaa
bbbb
cccc
dddd
group_names[0]:
host1 --> aaaa
host2 --> bbbb
host3 --> cccc
host4 --> cc_group
Ilgiz
Ilgiz
по сему у меня вопрос, это специфика версии 2.7.10, баг или все же нормальное положение вещей, что порядок наследования переменных зависит от алфавитного порядка?
Timur
Ilgiz
ну ок, если это нормальное поведение буду теперь иметь ввиду
Ilgiz
спасибо!
Timur
Timur
А переменная group_names - это просто список групп, в которые входит хост. Туда входят все группы - как родительские, так и дочерние. Если разницы никакой нет, то самый простой вариант объединения - по алфавиту
Anatoliy
пишу роль обмена ssh ключами. до запуска плейбука неизвестно на какие хосты нужно сложить публичный ключ, поэтому внутри роли использую add_host
как-то внутри роли можно пробежаться по добавленным хостам или только на уровне плейбука?
Ivan
Всем привет!
Кто то сталкивался с проблемой неработающего Ansible в виндовом WSL?
Vladimir
а кто нибудь писал роли для weblogic oracle?
tutunak
NS 🇷🇺
NS 🇷🇺
У меня был только долгий респонс на ввод команды
Mikhail
Timur
Anatoliy
доброго времени суток.
подскажите как такое возможно:
TASK [Gathering Facts] ****
skipping: [hostname.net]
сам хост добавляется с помощью add_host, а для плейбука (сразу после add_host) в hosts указана та же группа.
Если группы не совпадают выводится ошибка "skipping: no hosts matched", поэтому ошибки в написании группы нет, но хост все равно пропускается
также как и все остальные таски плейбука
Timur
Anatoliy
Покажите код
https://pastebin.com/ksZkKzgc в debug-е отображается то, что нужно и тот же хост потом пропускается для всего плейбука "ssh_key_from"
Timur
Timur
Банально ansible_host и ansible_port отсутствуют
Timur
ansible_ssh_key - тоже
Anatoliy
убрал when стало работать как ожидается
Timur
Ну, отлично тогда
Anatoliy
У вас же там ни адреса нормального, ни кредов
в основном подсталяются значения из inventory в "родительском" плейбуке.
пришлось делать подключение одного плейбука из другого, поскольку внутри роли я не могу работать с хостами, добавленными через add_host
так что отдельный плейбук как бы заменил tasks/main.yml роли
Anatoliy
все равно странное поведение
Denis 災 nobody
Denis 災 nobody
Alex
читал кто?
Alex
есть что то интересное или азы?
Andrey
@amarao а чего ты сюда свою статью про плейбуки и роли не запостил?! годно же написано!
Andrey
https://medium.com/opsops/ansible-role-is-not-a-fancy-play-5c54c5f456e5
George
Там скоро выложат полную версию видео с devops meetup'а, где я это всё подробно и с картинками выкладывал.
Andrey
Alex
@amarao
это ты на хабре с таким же ником, правильно?
George
Да.
Sergey
George
Я категорически против использования объектов инвентори (имена хостов/групп) внутри ролей.
George
{% for host in groups.database %} {{ hostvars[host].ansible_default_ipv4_address }} {% endof %} и т.д.
Гайрат
Sergey
А!
Дык да, согласен. Ломает совместимость. Я бы ещё добросил, что если ожидаешь внутри роли некую переменную - подпиши её в плее в качестве параметра, чтобы не зафакапить того, кто будет рефакторить всю балалайку.
George
Не должны. Но привязываются практически у всех, кто делает базы данных/acl'и и т.д.
Sergey
George
Моё мнение, что ансибл сделал большую ошибку в дизайне, когда разрешил доступ ко всем переменным из шаблона (у шефа их явно надо объявить при использовании шаблона).
Sergey
Справедливости ради - ты вот сам выше пример привёл, но там совсем не нужно обращаться к свойству объекта. Что действительно стоит сделать - так это обращаться к значению словаря по ключу (то бишь через ['key']). Тогда естественным образом отваливается хардкод, и можно написать [var] - то бишь косвенное обращение, по ключу, лежащему в переменной 'var'.
Опять же, если перекроешь класс Templar - получишь свой вариант Ansible, где указанный недостаток дизайна побеждён 😉
George
Он не побеждён, потому что в ансибле нельзя написать вот так вот:
vars:
target_ip: '{{ target_ip }}'А без этой штуки всякая explicit не работает.
George
Допиши к каждому хосту и группе в инвентори циферку "1" в конце и посмотри как оно взорвётся.
George
Это называется pathological coupling.
Sergey
Alex
George
node1 -> node11, pg_group -> pg_group1
Alex
George
@tnt4brain, я хочу показать, какие переменные будут использоваться внутри template так, чтобы можно было их увидеть, не открывая template. Точнее, я уже не хочу, я смирился, но считаю, что невозможность так сделать - это ошибка дизайна.
George
set_fact работает, но не всегда. Мы уже обсуждали vars для include_role, когда set_fact улетает в отдельный оверлей.
Sergey
@tnt4brain, я хочу показать, какие переменные будут использоваться внутри template так, чтобы можно было их увидеть, не открывая template. Точнее, я уже не хочу, я смирился, но считаю, что невозможность так сделать - это ошибка дизайна.
Напиши коммент.
Фактически запись, которую ты привёл - "хочу передать параметр со значением, равным значению этого параметра".
Я вот не видел в форматах сериализации работающие кольцевые ссылки.
Timur
vars:
target_ip: '{{ target_ip | default("") }}'
Так будет работать
George
Не будет. Рекурсия jinja
Alex
node1 -> node11, pg_group -> pg_group1
ну вот у меня есть
[jfrt_ha_master]
master ansible_host=18.xxx.xxx.xxx ansible_user=ansible private_ip=172.31.43.147
[jfrt_ha_slave]
slave1 ansible_host=54.xxx.xxx.xxx ansible_user=ansible private_ip=172.31.39.89
slave2 ansible_host=18.xxx.xxx.xxx ansible_user=ansible private_ip=172.31.44.183
[jfrt_ha_database]
database ansible_host=18.xxx.xxx.xxx ansible_user=ansible private_ip=172.31.47.54
если я переименую slave1 в slave11, то все сломается?