Timur
Timur
Опишите исходную задачу, а не решение, которое вы придумали
Roman
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
Tyler
fiv3
Gleb
на самом деле это несуществующая проблема - editroconfg+precommit хук с линтером
George
Damir
Эксперты, подскажите в чем сакральный смысл того, что в ансибл нельзя сочетать include_role и delegate_to в одном таске?
Timur
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
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
И что мешает сделать обычный плей с ролью на группу?
inqfen
Господа, никто не юзает loop с передачей переменных для генерации темплейта? Оно сейчас работает? Раньше помню не работало, а до проверки пока не дошел
Damir
У меня роль, в которой указаны таски на группу хостов, но в середине этих тасков нужно проверить статус некоторых сервисов для одного конкретного хоста - - "{{ groups['new-primary'][0] }}" и потом пойти далее по таскам
Damir
Вроде нормальная логика, нет?
Timur
Timur
Timur
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 не подставлялся
Timur
Damir
Даже если это странное и колхоз, почему это не совместимо, вот что хочется познать)
inqfen
Зачем vars?
ну потому что этот item внутри шаблона, нужно чтобы при каждой генерации он был новый
Timur
Damir
Нормальные средства, это вынести в отдельный плей с ролью?
inqfen
Damir
Так себе аргумент
Timur
inqfen
в 2.2 вроде в последний раз такую конструкцию юзал и не работиало)
inqfen
приходилось в отдельный include заворачивать один таск
Timur
inqfen
и в этот include переменную передавать, вот тогда работало
inqfen
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
Timur
Damir
Playbook:
```cat playbooks/cluster-failover.yml
---
- hosts: standby_srv
gather_facts: no
any_errors_fatal: true
roles:
- switch-replication
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] }}"
Tadeusz
checkdiff
Оно работает.
У всех все работает, но подходов к реализации множество как мы видим тут предложили 3-4.
Задача осознать и сделать минимальное количество действий для достижения результата
tutunak
Что еще можно почитать про molecule кроме оф доки?
Damir
Выше советовали читать сразу исходники ))
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 для списка скачанных файлов ( подскажите как список файлов загнать в переменную