Timur
Для лупа можно добавить label через loop_control
Artem
Для лупа можно добавить label через loop_control
это да, но понять на каком элементе ошибка как можно без повышенного дебага?
Timur
Можете в label даже другой параметр добавить
Timur
Тот же item
Artem
Тот же item
спасибо, попробую
Sergey
citius
Просто надо не в roles:, а в tasks:
Aleksey
Ну, так будет работать же - name: role1 include_role: role - name: role2 include_role: role
ну это тоже самое, в логе будет так: TASK [role : название таска в роли] ***
Aleksey
а я хотел TASK [role1 : название таска в роли] ***
Алексей
Всем привет. Есть файл темплейта для деплоймента сущности кубернетеса. В связи со спецификой приложения данный файл "подвергается" шаблонизатору несколько раз. Чтоб было понятнее, на примере объясню. Нужно 5 деплойментов игнайта в кубике, отлючающихся только именем деплоймента. Таким образом после "шаблонизации" мы получаем пять файлов ignite-dep-{{ index }}.yaml Вопрос. Как мне быть, если я использую в качестве таргет хоста не локалхост, а удалённый хост? Ведь результирующие файлы появляются не на таргет хосте, а на локальном... Может есть какой-то метод для ситуаций, когда шаблонизатор должен пройтись по файлу несколько раз без генерации результирующих файлов? вот пример моей таски: - name: get templating results template: src: ignite-dep.yaml.j2 dest: roles/ignite-instance/ignite-dep-{{ index }}.yaml loop: "{{ range(1, ignite_instance_count|int+1 )|list }}" loop_control: loop_var: index
Lamobot
Всем привет. Есть файл темплейта для деплоймента сущности кубернетеса. В связи со спецификой приложения данный файл "подвергается" шаблонизатору несколько раз. Чтоб было понятнее, на примере объясню. Нужно 5 деплойментов игнайта в кубике, отлючающихся только именем деплоймента. Таким образом после "шаблонизации" мы получаем пять файлов ignite-dep-{{ index }}.yaml Вопрос. Как мне быть, если я использую в качестве таргет хоста не локалхост, а удалённый хост? Ведь результирующие файлы появляются не на таргет хосте, а на локальном... Может есть какой-то метод для ситуаций, когда шаблонизатор должен пройтись по файлу несколько раз без генерации результирующих файлов? вот пример моей таски: - name: get templating results template: src: ignite-dep.yaml.j2 dest: roles/ignite-instance/ignite-dep-{{ index }}.yaml loop: "{{ range(1, ignite_instance_count|int+1 )|list }}" loop_control: loop_var: index
template при указании удаленного хоста закинет все темплейты туда со подстановками. Не понятно, где вам нужны файлы, на локалхосте или же на удаленных? Можно использовать copy, если не нужны подстановки :)
Lamobot
Обработанные файлы нужны на удалённом хосте
Если указан удаленный хост, то template все подставит и зальёт файл на него сразу.
Алексей
Если указан удаленный хост, то template все подставит и зальёт файл на него сразу.
А можно пример, как его указать? Или прямо в dest указать полный путь с удалённым хостом? Но ведь есть ситуации, когда в качестве таргет хоста юзается и локалхост...
Lamobot
А можно пример, как его указать? Или прямо в dest указать полный путь с удалённым хостом? Но ведь есть ситуации, когда в качестве таргет хоста юзается и локалхост...
Плейбук запускается над каким инвентарем? localhost? Запустите эту же таску, только с инвентарём той машины, куда вам нужно залить файлы. И путь сменить, врядли на ней они нужны будут в roles... :)
Denis
Всем доброе утро
Denis
ребята подскажите как правильно скопировать директорию с node на ansible
Artem
Плейбук запускается с разными инвентарями, то есть и с локалхостом, и с удалённым.
Для какой инвентори запускается пб, туда и зальется шаблон
Алексей
Для какой инвентори запускается пб, туда и зальется шаблон
Не понимаю. Когда файл шаблонизируется, то он шаблонизируется на локалхосте независимо от того, что является таргетом?
Lamobot
ребята подскажите как правильно скопировать директорию с node на ansible
Что значит правильно? :) Модули copy и synchronize Говорят, что copy медленный на большом количестве файлов. synchronize - это обертка над rsync.
Denis
rsync нужен ключь добавлять
Artem
copy не может копировать джиректорию
Уже может насколько помню добавили такую фичк
Lamobot
copy не может копировать джиректорию
Спорить не буду :) https://docs.ansible.com/ansible/latest/modules/copy_module.html
Lamobot
If path is a directory, it is copied recursively. In this case, if path ends with "/", only inside contents of that directory are copied to destination. Otherwise, if it does not end with "/", the directory itself with all contents is copied. This behavior is similar to the rsync command line tool.
Denis 災 nobody
это про другое
Denis
ну в 2.9 вроде и добавили ну у меня 2.7
Denis 災 nobody
копируем папку или её содержимое
Dmitriy
если я не ошибаюсь, то модуль copy просто копирует, syncronize же более умный и если файлы присутствуют, то скопирует только различающиеся, что собственно и делает его более корректным вариантом
Denis 災 nobody
у рсинка по первости доставляет
Dmitriy
ну для этого надо подружить машину между ссобой
а для copy не надо ? вроде в любом случае должны дружить
Denis
а для copy не надо ? вроде в любом случае должны дружить
ну файл один у меня копируется и туда и сюда
Denis
а вот директория нет (
Lamobot
ну файл один у меня копируется и туда и сюда
Обновите ансибл Пакуйте папку в архив Настройте rsync
Denis
без обнволение ансибла
Dmitriy
а вот директория нет (
я вот заметил, что гораздо удобнее, при копировании чего либо создавать аналогичную структуру. Т.е. директорию files считать как / . Соответственно, если залить директорию /etc/mysoft то в files я создаю папку etc, далее mysoft, а туда уже конфиг
Dmitriy
а когда не знаешь стркутуру и т.д
это как ? если вам надо подкинуть конфиг, то он лежит, как правило, в определенном месте. Если место не определенное и каждый раз разное, то тогда да, думаю прийдется усложнять(опять же, модуль find, после register, после уже copy или sync)...или я костыль предлагаю и есть решение лучше ?
Denis
пройти по всем машинам и потом положить в гит
Denis
наверно проще с машина ложить в гит
Dmitriy
ну как вариант, если что вот пример о чем я говорил(https://stackoverflow.com/questions/41565614/ansible-how-to-register-output-from-find-module-and-use-in-other), но все равно выглядит не очень красиво как по мне, кажется что можно сделать элегантнее, но увы, наверное это последствия любителя баша :)
Timur
пройти по всем машинам и потом положить в гит
Что именно вы пытаетесь сделать?
Denis
Может
По машинам собрать все конфиги в директорию и перетащить ее на delageto
Timur
Что такое delageto?
Timur
И опишите задачу на более высоком уровне, пожалуйста
Timur
Собрать в директорию и скопировать - это уже решение, а не задача
Timur
Как задача звучит?
Timur
В формате story
Denis
Собрать все конфиги с каждой машины и положить в гит
Timur
Собрать все конфиги с каждой машины и положить в гит
И на каком этапе вам нужно копировать директорию? Откуда и куда?
Denis
рольи копирует все конфиги в временую папку на машине эту временную папку мне надо перетащить на машину с котоорой я запускаю свой плэйбук
Timur
И зачем с разных машин непонятно что класть в гит, кстати?
Timur
если взять модуль fetch, То можно обойтись без delegate_to
Модуль fetch не работает с директориями
Denis
ну видемо остается вариант только один
Denis
сжать в архи перетащить и распоковать
Artem
Denis
synchronize
для него придется добавить ключь в обратную сторону не хотелось бы
Artem
synchronize
я когда прошлый раз пробовал с помощью него он требовал рута, так ли это?
Timur
synchronize умеет pull