Timur
Операции обновления выполняются с удаленного хоста. Нужно сформировать вложенный цикл и сформировать список словарей...
Вам нужно подключиться к нескольким серверам бд и прогнать там некий набор команд?
Timur
Опишите исходную задачу, а не решение, которое вы придумали
Roman
Вам нужно подключиться к нескольким серверам бд и прогнать там некий набор команд?
Да, этот набор команд зависит от того что находится на сервере бд
Timur
Да, этот набор команд зависит от того что находится на сервере бд
Ну, так, в чем проблема? Подключаетесь, получаете статус с помощью команды, парсите вывод. На основании полученной информации делаете дальнейшие действия
Timur
В чем именно загвоздка?
Roman
Нужно выполнить посхемное обновление БД. Имеется список настроек подключения и несколько файлов со списком схем на каждом сервере. Схемы везде отличны. Liquibase нужно передать настройку для подключения и имя схемы.
Roman
Загвоздка в создании итогового списка: server1, schema1; server1, schema2; server2, schema3
Roman
Из двух источников
Roman
Т.е. нужно пройтись по каждому элементу списка подключения, для него взять файл JSON и по каждому элементу в файле
Tyler
Кто подскажет, почему при следующем синтаксисе: - name: Create directories file: path: "{{ item }}" state: directory mode: 0755 owner: "{{ SGI.USR }}" group: "{{ SGI.USR }}" recurse: yes loop: - "{{ SGI.USR_HOMEDIR }}" - "{{ SGI.USR_LOGDIR }}" - "{{ HTTP.PATH }}" выдает ошибку FAILED! => {"msg": "'item' is undefined"}
Danila
не передано значение item
fiv3
нашел, там в след строках были проблемы с отступами
типичная проблема для ямл форматов типу ансибла)
Gleb
на самом деле это несуществующая проблема - editroconfg+precommit хук с линтером
Damir
Эксперты, подскажите в чем сакральный смысл того, что в ансибл нельзя сочетать include_role и delegate_to в одном таске?
Damir
У меня вот такая конструкция не работает: - name: Ger monit summary for all process on server include_role: name="monit-status" delegate_to: "{{ item }}" with_items: - "{{ groups['new-primary'][0] }}"
Gleb
что, прошу прощения?
пробелы в ямликах удаляет сама иде прекрасно с помощью плагинов или вообще встроенными средствами
Timur
И что же не "работает"?
Damir
ERROR! 'delegate_to' is not a valid attribute for a IncludeRole The error appears to be in '/root/switchover/roles/switch-replication/tasks/main.yml': line 5, column 3, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: - name: Ger monit summary for all process on Server ^ here
Damir
Not valid attribute
Timur
А, понятно.
Timur
Ignores some keywords, like until and retries.
Timur
delegate, видимо, тоже
Timur
Ну, что тут сказать. Не нужно делать странных вещей
Damir
А почему странно?
Damir
На гитхабе популярная дискусия на эту тему, обещают что данный функционал рано или поздно завезут в ансибл
Timur
А почему странно?
Потому что очень извращенная логика получается
Timur
Можете описать юзкейс - для чего вам такое странное сочетание?
Timur
И что мешает сделать обычный плей с ролью на группу?
inqfen
Господа, никто не юзает loop с передачей переменных для генерации темплейта? Оно сейчас работает? Раньше помню не работало, а до проверки пока не дошел
Damir
У меня роль, в которой указаны таски на группу хостов, но в середине этих тасков нужно проверить статус некоторых сервисов для одного конкретного хоста - - "{{ groups['new-primary'][0] }}" и потом пойти далее по таскам
Damir
Вроде нормальная логика, нет?
Damir
Я уже вынес данную логику в отдельную роль, но все же для меня не логично что include_role и delegated_to не совместимы
inqfen
Что именно не работало?
типа - name: create namespaces k8s: definition: "{{ lookup('template', 'namespace.yml' ) }}" vars: "{{ item }}" loop: "{{ namespaces }}"
Timur
Вместо вот этого треша: https://t.me/pro_ansible/109517
inqfen
вот в тот шаблон item не подставлялся
Damir
Даже если это странное и колхоз, почему это не совместимо, вот что хочется познать)
inqfen
Зачем vars?
ну потому что этот item внутри шаблона, нужно чтобы при каждой генерации он был новый
Timur
Даже если это странное и колхоз, почему это не совместимо, вот что хочется познать)
Именно потому, что такой странный колхоз мало кому приходит в голову создавать, учитывая имеющиеся нормальные средства
Timur
ну потому что этот item внутри шаблона, нужно чтобы при каждой генерации он был новый
Он и так будет. Делайте loop_var и используйте его внутри шаблона
Damir
Нормальные средства, это вынести в отдельный плей с ролью?
Damir
Так себе аргумент
inqfen
в 2.2 вроде в последний раз такую конструкцию юзал и не работиало)
Timur
Так себе аргумент
Так себе аргумент - это пытаться сделать из роли плейбуку
inqfen
приходилось в отдельный include заворачивать один таск
inqfen
и в этот include переменную передавать, вот тогда работало
Timur
похуже чем в 2013
Мой вам совет - закупайтесь биткоинами. Скоро будете в шоколаде
Damir
На гитхабе, пишут что это не странное, а вполне нормально
Damir
https://github.com/ansible/ansible/issues/35398
Damir
It looks like the future Ansible 2.7 (currently devel) partially has this feature implemented. You still have to manually re-apply become/tags/etc. settings.
Damir
Пока не работает, но в замен юзайте tag-и
Timur
Какая версия ансибла у вас?
Damir
2.8.2
Timur
А если вот так? - name: Ger monit summary for all process on server include_role: name="monit-status" apply: delegate_to: "{{ item }}" with_items: - "{{ groups['new-primary'][0] }}"
Damir
Уже пробовал, на apply выдает ошибку
Timur
Какую?
Damir
ERROR! 'apply' is not a valid attribute for a IncludeRole The error appears to be in '/root/switchover/roles/switch-replication/tasks/main.yml': line 5, column 3, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: - name: Task 1. Ger monit summary for all process on Server ^ here
Damir
Playbook: ```cat playbooks/cluster-failover.yml --- - hosts: standby_srv gather_facts: no any_errors_fatal: true roles: - switch-replication
checkdiff
Динамический инвентарь?
Спасибо, сейчас склоняемся к этому подходу. Результаты отпишу в концу недели.
Damir
Role: ```- name: Get monit summary for all process on Server include_role: name="monit-status" apply: delegate_to: "{{ item }}" with_items: - "{{ groups['new-primary'][0] }}"
checkdiff
Оно работает.
У всех все работает, но подходов к реализации множество как мы видим тут предложили 3-4. Задача осознать и сделать минимальное количество действий для достижения результата
tutunak
Что еще можно почитать про molecule кроме оф доки?
Damir
Выше советовали читать сразу исходники ))
Kane
Что еще можно почитать про molecule кроме оф доки?
тут у ребят масса ролей, и они большие любители молекулы, можно посмотреть примеры https://github.com/lean-delivery
Tyler
Ни у кого нет проблем с модулем apt_key? v3.7.4
Tyler
Ни у кого нет проблем с модулем apt_key? v3.7.4
у меня вроде нормально добавляет записи в реполист, но в одном случае apt непонятно откуда пытается ставить пакет (хотя при ручном добавлении записи все норм), а в другом выдает ошибку MODULE FAILURE\nSee stdout/stderr for the exact error, хотя при повторном запуске с этой же задачи все норм. (полный код ошибки https://pastebin.com/DgPRUV8S)
Oleg
Скачиваю файлики модулем get_url, но никак не получается сделать потом set_fact для списка скачанных файлов ( подскажите как список файлов загнать в переменную