Vladislav 👻
там тупо темплейт и докер
Timur
Код
Vladislav 👻
так вот же
Vladislav 👻
Timur
Это же не вся роль
Vladislav 👻
Vladislav 👻
и второй кусок по докеру
Vladislav 👻
Vladislav 👻
темплейт
Timur
Это что за файл?
Vladislav 👻
второй файл
Vladislav 👻
Vladislav 👻
вот мейн
Vladislav 👻
в конфиге темплейт, в инсталле докер
Vladislav 👻
есть одна тонкость только, используется третий питон при выполнении
Vladislav 👻
Vladislav 👻
вот так в плейбуке
Timur
Судя по всему, такая директория уже есть
Vladislav 👻
нет
Timur
Ансибл воспринимает dest как директорию
Timur
И копирует в нее
Timur
То, что выводит msg - путь к директории
Timur
Проверьте
Timur
Это единственное разумное объяснение
Timur
Кстати, а покажите структуру роли
Timur
tree можете сделать?
Timur
Или иным образом
Vladislav 👻
кажется я понял, в докере апликейшен создавал похоже путь
Vladislav 👻
и рестартился постоянно
Timur
Ну, вот и я о том же примерно намекал
Vladislav 👻
сейчас на чистую вроде получилось
Vladislav 👻
огромное спасибо! 👍🏻
Timur
Не за что :)
Павел П.
добрый вечер. Как расово верно принято инвентори в AWX загонять? Есть регулярно обновляемый текстовый файл с группами-var'ами, есть awx в докере рядом. Рассматриваю варианты: - всё пушить на гит - прописать в докер volume и в нем awx-manage inventory_import - дописать скрипт создающий файлик и вставлять в awx по апи. - внутри докера прямо в /etc/ansible/hosts писать Что сами используете, как другим посоветуете?)
Artur
можн ещё Inventory Scripts
Artur
попробовать
Vadim
гит, чтобы диффы были и CI могла проверить
Womchik
руками можно копировать
Михаил
Спасибо
Sergey
"Весёлые картинки" какие-то. Pastebin в студию 😉
Diana
всем привет! У меня есть файл inventory в котором лежат айпишники роутеров mikrotik, в roles находятся роли(напрмер timezone-MSK), в каждой роли находится 2 директории files и tasks. В Директории files находится скрипт, выполняемый на RouterOs (микротиковская прошивка) в директории tasks находится *.yml файл, в котором содержится --- - name: Set MSK Timezone command: bash -c "cat roles/timezone-MSK/files/set_timezone.rsc | ssh {{mikrotik_user}}@{{inventory_hostname}} -p {{ansible_ssh_port}} -o StrictHostKeyChecking=no" Хотелка: хочу в зависимости от того к какому ip адресу обращаюсь генерировать новый *rsc файл. Нужно для: сменить пароль на устройствах на неодинаковый. Могу сложить документ ip и требуемый для установки пароль.
Diana
Пока не поняла каким образом мне это делать. /tasks/main.yml? Но тогда как им читать документ с айпишниками и паролями?
Dok
У меня почти схожий вопрос. Есть блок: {% for host in groups['backends'] %} server {{ host }} {{ tratata }}:83 check {% endfor -%} как вместо tratata вызвать факт от того хоста(host), который сейчас учавствует в цикле?
Dok
hostvars[]
Да, я вчера весь вечер перебирал разное форматирование, но не допёр как
Dok
Даже из документации, почти не меняя вставляю, и она не проходит валидацию
Dok
Просто, можете скинуть пример вызова какого-нить факта таким способом
simplemice.eth
показывай
Sergey
hostvars[inventory_hostname]['factname']
Dok
backend backends mode tcp balance roundrobin {% for host in groups['backends'] %} server {{ host }} {{ hostvars[host]['ansible_all_ipv4_addresses'] | ipv4('192.168.200.0/24') | first }}:83 check fall 3 rise 2 {% endfor -%} Выдаёт AnsibleUndefinedVariable: 'ansible.vars.hostvars.HostVarsVars object' has no attribute 'ansible_all_ipv4_addresses'
Dok
Я так понимаю, что вместо hostvars[host] надо по-другому host указать
Vladislav 👻
потому что хост не попал в плейбук вызова
Vladislav 👻
т.е. модуль setup не вызывался для данного хоста, а значит и данных нет
Sergey
Используй просто первый ip, а не дефолтный.
Dok
То есть, надо перед этим темплейтом собрать все факты всех хостов?
Sergey
Если у хоста нет маршрута на 8.8.8.8 - всё, дефолтного адреса не будет. Кто хочет поспорить - сначала гляньте в исходники.
Dok
Грустно..
Sergey
Грустно..
А ансибл догадаться должен об адресе? :-o
Dok
Таки я думал, что он полезет на перечисляемый хост и запросит
Sergey
Нет.
Dok
Вот и грустно..
Dok
Зачем цикл, если запрос нужен для одного хоста?
Чтобы вставить актуальные ip других хостов в конфиг и не захломлять hosts кучей ручных переменных
Timur
В какой конфиг?
Dok
В какой конфиг?
В любой конфиг, который надо генерить ансиблом и где надо указывать адреса внешних сервисов. Например, конфиг haproxy, конфиги кластеров у разных сервисов
Dok
Управлять апстримом, комментируя хосты в файле hosts. Круто, же!
Timur
А с текущим вариантом какие проблемы?
Dok
А с текущим вариантом какие проблемы?
Надо перед выполнением общего таска опрашивать все хосты, ладно, он будет это делать не быстро, так добавится огромный блок в hosts, который надо актуализировать каждый раз уже в нескольких местах
Timur
Это параллельно обычно делается, и довольно быстро
Timur
Или у вас там тысячи хостов в одной группе?
Dok
Не, в разы меньше