Timur
Timur
Зачем? Если роль делает только модификацию
Oleg
Oleg
мне просто надо понять почему переменная не видет переменную состоящую из нескольких переменных)
Timur
Timur
Где-то забыли раскрыть нужным образом - вот и результат
Timur
Без кода можно только гадать
Timur
Можете показать ваш код целиком?
Timur
Без кредов и прочих секретов, понятное дело
Oleg
Которую вы передаете еще через одну переменную :)
become: yes
vars:
adop: '{{ A }}-{{ B }}-adop-001'
тут_еще_переменные
lineinfile:
path: "/etc/hosts"
state: present
owner: "root"
group: "root"
mode: "0644"
line: "{{ item }}"
delegate_to: "{{ node }}" <—— сюда передаю adop
with_items:
- "{{ groups['app'] }}"
- тут_еще_итемс
Oleg
указываю node равнм adop и должна бы передаться var=adop , но нет
Timur
Код целиком
Timur
А не в пересказе
Timur
lininfile в цикле вызывать - вообще плохая практика
Timur
Обычно в таких случаях нужен либо template, либо blockinfile
Oleg
Код целиком
это роль, а роль в плэйбуке так вызывается
- hosts: localhost
roles:
- role: hosts
become: yes
а больше и нет ничего
Max
Max
если тебе натсамом деле надо проигнорить любую ошибку, приклеивай:
...
failed_when: False
Max
если мне не изменяет склероз, этот гад проигнорит даже ошики типов переменных.
Max
очень рекомендуют вешать это на все таски 👍
Max
никогда не будут фейлиться
Max
все будет "зелено".
Timur
Timur
Oleg
😆👍👍
- name: bla-bla
become: yes
vars:
adop: '{{ A }}-{{ B }}-adop-001'
тут_еще_переменные
lineinfile:
path: "/etc/hosts"
state: present
owner: "root"
group: "root"
mode: "0644"
line: "{{ item }}"
delegate_to: "{{ node }}" <—— сюда передаю adop
with_items:
- "{{ groups['app'] }}"
- тут_еще_итемс
Max
Max
и очень полезный плагин для дженкинса:
Timur
Oleg
Oleg
да
Timur
Ради этой одной таски нужна роль?
Timur
Max
Timur
Oleg
Oleg
Timur
Я не знаю, что такое node у вас
Timur
Имя группы?
Timur
В переменной - имя хоста?
Timur
Или группы
Oleg
Timur
Ну, сделайте тогда hosts: '{{ node }}'
Dr. L.S.Dee
// Кумар С[ингх?] не осилил Терминатора...
Anonymous
:-)
Ivan
Я ещё не слышал про гэлекси. Но вот линтеру теги вообще пофиг на некоторые таски. Пришлось конфиг подсоывать
Timur
Ivan
Денис
всем привет, такой вопрос:
сейчас у меня один репозиторий ансибла, в котором плейбуки и переменные для нескольких приложений, планирую разделить на разные.
В каждом репозитории будет несколько инвентори (stage/prod), и в этих инвентори будут общие переменные для разных репозиториев (в основом переменные с настройками подключения, ну и еще по мелочи). То есть stage окружение для разных проектов в разных репозиториях может иметь (и скорее всего будет) какой-то набор одинаковых параметров. Хочется избежать дублирования этих данных в каждый репозиторий.
На данный момент придумал вынести эти общие переменные в гит сабмодуль, положить куда-нибудь в .../ansible/vars/common_vars и делать симлинки из inventory на нужные папки.
На сколько это нормальный вариант, и есть ли альтернативы получше?
Timur
Timur
Главное, чтобы вам удобно было все это в один рабочий проект собирать при запуске плейбук
kbks
День добрый, господа. Есть json вида:
[ {
"interfaceType" : "uu",
"version" : "19.1.2.1"
}, {
"interfaceType" : "uu",
"version" : "19.1.2.2"
}, {
"interfaceType" : "push",
"version" : "19.1.2.0"
}, {
"interfaceType" : "push",
"version" : "19.1.2.2"
} ]
Как правильно зарегистрировать эти uu/push с соответствующими версиями, что б их же потом использовать в таске?
łibfitź.r14.a
łibfitź.r14.a
Вроде то, что вам нужно
kbks
попробую, спасибо
Алексей
Коллеги доброго
Подскажите пожалуйста как правильно сделать.
Есть таск который ставит по дефолту пакеты на хосты. Он получает массив из default
Я хочу на некоторых хостах/группах добавить ещё пакеты, но не хочу переопределять имеющийся массив тк придётся всю портянку писать заново. Хотелось бы конкатенировать список из default и список из переменных группы/хоста.
Как правильней это будет сделать?
Timur
Алексей
Nklya
Я просто через + соединял списки
Алексей
тут ещё unique добавлено
Damir
Ребята, возвращаясь к вопросу проверки пароля для mysql. Сделал, как тут посоветовали через block/rescue.
- block:
- name: Task 3. If customer used MySQL DB without password
shell: innobackupex --no-timestamp /mysql-backup/{{ timestamp.stdout }}
no_log: True
rescue:
- name: Delete created directory before execute backup in password mode
shell: /bin/rm -rf /mysql-backup/{{ timestamp.stdout }}
- name: Task 4. If customer used MySQL DB with password
shell: innobackupex --no-timestamp /mysql-backup/{{ timestamp.stdout }} -p "{{ mysql_root_password }}"
Вопрос, при выполнении таска, если выполняется код из
rescue
части, то вся роль помечается как failed. Как этого избежать? Ведь в принципе задача выполнилась успешно.
Damir
Failed имею ввиду следующий вывод:
Timur
Алексей
Сейчас тебя отправят писать модуль для innobackupex
А вообще посмотри готовые модули под эту задачу - и используй его
Damir
Timur
Есть шанс, что он попадет в релиз 2.8
Damir
Damir
Отсылка к холивару про башсинбл, может не все так плохо когда он появляется как часть логики
Damir
Но да, новость в любом случаи хорошая. Полезная фича! Спасибо.