Ya
Реально мне кажется тут не ящик гвоздей а камаз )
Антон
Ya
это вывод
Ya
я потом делаю так что бы посмотреть
Ya
debug:
msg: "{{ item }}"
with_items: "{{ volume_fullname }}"
run_once: true
Антон
вместо with_items рекомендуют юзать loop
Антон
Но это так, мелочи
Антон
Ya
set_fact:
volume_fullname: "{{ item }}"
loop: "{{ nodes | product(['stack1_']) | list }}"
run_once: true
Антон
где и как ты потом юзаешь volume_fullname?
Ya
Антон
отлично, код в студию
Ya
file:
path: /folder/{{ item }}
state: directory
mode: '0755'
with_items: "{{ volume_fullname }}"
Антон
Антон
Ya
ну чоу )
Антон
все
Ya
блин _)
Антон
да. тебе задали 3 часа назад вопрос - зачем тебе это =)))
Ya
ну а че красивого решения склеить это нет ? надо тащить вот такие конструкции по плейбуку ? если не в одном месте юзаю ?
Антон
ответил бы сразу - получил бы решение на 3 часа раньше
Антон
Антон
в чем красота лишней переменной и как минимум 2 лишних шагов?
Антон
ну ок, одного
Ya
ну в принципе да, согласен просто так я переменных натолкаю а так один раз сделаю лист
Ya
хотя да лишний шаг........
Ya
короче хорошая задачка на собеседовании может быть :)
Ya
просто что бы уметь :)
Антон
нет, это не хорошая задача на собес
Ya
ну сделать лист из листа и переменной интересно же )
Антон
хотя смотря кого собесить...
Ya
вроде кажется тривиальной )
Ya
да хер там прыгал )
Антон
ансибл - это не язык программирования, запомни
Ya
да я это как бэ знаю
Антон
да вот судя по тому что делаешь - знаешь, но не приемлишь )))
Ya
да ну не может быть, что такие простые вещи не реализуются
Антон
они реально простые, и я тебе показал как они делаются
Антон
то, что хочешь ты - это усложнение
Ya
там выше Тимур прислал решение на j2 :))) прям реально тоже похлещзе регулярок )
Ya
Ya
реально Xk`uzme )_
Ya
Спасибо Антон )
Ya
Антон
почитал - там ничего сложного. выглядит страшно, но по сути крайне просто )
Антон
Ya
подставлять по месту - работает сразу и красиво )
Vladimir
Всем привет. Аnsible не умеет в шаблоне в переменную записывать результат выполнения bash команды ?
Например, хочу копировать файл из шаблона. А там переменная х, которая является результатом выполнения команды.
Андрей
Зачем тебе bash, если есть Ansible?
Vladimir
Зачем тебе bash, если есть Ansible?
Смотри. Я хочу создать пользователя в openldap. Шаблоном копирую ldif файл для лдапа. Но мне нужно задать uid. А я не хочу вручную. Команда ldapsearch -H ldaps://localhost -D "cn=admin,dc=test,dc=ru" -w 123 | awk '/uidNumber: / {print $2}' | sort | tail -n 1 покажет максимальный. И я хочу увелчивая на 1 записывать его в шаблон
Андрей
https://docs.ansible.com/ansible/latest/modules/ldap_entry_module.html
Андрей
А почему готовым модулем не воспользоваться?
Pavel
если уж так хочешь странного, ты можешь свой баш запихнуть в предидущий шаг и сделать сетфакт в переменную, а ее уже использовать в шаблоне
Андрей
Я не знаю, по-моему практически любая задача, в том числе и эта решается с помощью Ansible
Vladimir
Андрей
Так uid можно обычно через loop или with_items задать, разве нет?
Pavel
Андрей
или задача, чтобы по порядку uid в openldap шли?
Андрей
тогда в Playbook можно использовать модуль shell или command и через факты передвать переменную
Андрей
тоже как вариант)
Vladimir
Deyvis
Коллеги, день добрый.
Deyvis
Может кто подсказать, как подсчитать число нод в группе интентори?
Lamobot
⌬ Дмитрий ⌬
коллеги - нужен совет:
есть набор ролей: одна создает дроплет на DO, а ряд других ролей должны с этими дроплетами поработать. В роли создания дроплета создаю инвентори файл, и туда записываю новоиспеченный дроплет, но при запуске плейбука в котором описаны все роли, начиная с создания, получаю ошибку в том что: no hosts matched. Как лучше передать запуск следующей роли, с новым хостом в инвентори? Как должен примерно выглядеть такой плейбук?
Андрей
У тебя инвентори не должно в роли лежать
Андрей
https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#directory-layout
Андрей
почитайте для начала вот эту статью
Lamobot
Андрей
Тогда динамический создавать
Evgeny
его даже создавать не надо
https://github.com/geerlingguy/ansible-for-devops/tree/master/dynamic-inventory/digitalocean
⌬ Дмитрий ⌬
Тогда динамический создавать
Ок, он и так создается динамически. Вопрос больше к тому как должен выглядеть плейбук для работы с этим динамическим инвентори
у меня на старте получилось пока так:
- hosts: localhost
connection: local
become: no
roles:
- droplets
Для следующих ролей нужно уже использовать динамический инвентори - и я так понимаю что в этом буке что то надо поменять.
Evgeny
а вообще в ансибле куча модулей для работы с DO, можно создать дроплет, зарегистрировать переменную и дальше уже использовать. Или так вам не подходит?
⌬ Дмитрий ⌬
коллеги - вот ответ на мой вопрос, которыйв принципе решил мою задачу, для того чтоб запустить роль на разном хосте (в том числе и динамически генерируемом) в плейбуке - вызвал запуск роли примерно так:
roles:
- { role: droplets, inventory_hostname = 'localhost' }
- { role: docker-init, hosts = 'do_droplets' }