Oleg
И что же это за роль такая?
модифицирует файл с помощбю lineinfile: и делегирует на опр сервер.
Oleg
Что делегирует-то?
модификация файла делегируется на опр машину
Timur
Зачем? Если роль делает только модификацию
Oleg
Oleg
мне просто надо понять почему переменная не видет переменную состоящую из нескольких переменных)
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
если тебе натсамом деле надо проигнорить любую ошибку, приклеивай: ... failed_when: False
Max
если мне не изменяет склероз, этот гад проигнорит даже ошики типов переменных.
Max
очень рекомендуют вешать это на все таски 👍
Max
никогда не будут фейлиться
Max
все будет "зелено".
Damir
если мне не изменяет склероз, этот гад проигнорит даже ошики типов переменных.
Лучше игнорировать сразу таски, тогда плейбуки будут выполнятся моментально, быстро и без ошибок 🙈👍
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
и очень полезный плагин для дженкинса:
Oleg
да
Timur
Ради этой одной таски нужна роль?
Oleg
Ради этой одной таски нужна роль?
из Jenkins переменные передаются
Max
и очень полезный плагин для дженкинса:
блин, не нахожу. был плагин, который все билды делал зелёненькими. Кто помнит.
Timur
- 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'] }}" - тут_еще_итемс
Что мешает сделать вот так? - hosts: node vars: adop: '{{ A }}-{{ B }}-adop-001' tasks: - name: Adjust /etc/hosts become: yes lineinfile: path: /etc/hosts state: present owner: root group: root mode: 0644 line: "{{ item }}" loop: - "{{ groups['app'] }}"
Timur
Я не знаю, что такое node у вас
Timur
Имя группы?
Oleg
Я не знаю, что такое node у вас
переменная, которую я тоже в дженкинсе задаю) что бы потом delegate_to: "{{ node }}"
Oleg
Я не знаю, что такое node у вас
какая то 1 определенная машинка
Timur
В переменной - имя хоста?
Timur
Или группы
Timur
Ну, сделайте тогда hosts: '{{ node }}'
Dr. L.S.Dee
// Кумар С[ингх?] не осилил Терминатора...
Anonymous
:-)
Timur
Только недавно отключал ворнинги на 120 символов..
У себя-то можно что угодно отключить. А, вот, в Galaxy просто так - нет. Разве что обвешаться тегами skip-ansible-lint
Ivan
Я ещё не слышал про гэлекси. Но вот линтеру теги вообще пофиг на некоторые таски. Пришлось конфиг подсоывать
Денис
всем привет, такой вопрос: сейчас у меня один репозиторий ансибла, в котором плейбуки и переменные для нескольких приложений, планирую разделить на разные. В каждом репозитории будет несколько инвентори (stage/prod), и в этих инвентори будут общие переменные для разных репозиториев (в основом переменные с настройками подключения, ну и еще по мелочи). То есть stage окружение для разных проектов в разных репозиториях может иметь (и скорее всего будет) какой-то набор одинаковых параметров. Хочется избежать дублирования этих данных в каждый репозиторий. На данный момент придумал вынести эти общие переменные в гит сабмодуль, положить куда-нибудь в .../ansible/vars/common_vars и делать симлинки из inventory на нужные папки. На сколько это нормальный вариант, и есть ли альтернативы получше?
Timur
всем привет, такой вопрос: сейчас у меня один репозиторий ансибла, в котором плейбуки и переменные для нескольких приложений, планирую разделить на разные. В каждом репозитории будет несколько инвентори (stage/prod), и в этих инвентори будут общие переменные для разных репозиториев (в основом переменные с настройками подключения, ну и еще по мелочи). То есть stage окружение для разных проектов в разных репозиториях может иметь (и скорее всего будет) какой-то набор одинаковых параметров. Хочется избежать дублирования этих данных в каждый репозиторий. На данный момент придумал вынести эти общие переменные в гит сабмодуль, положить куда-нибудь в .../ansible/vars/common_vars и делать симлинки из inventory на нужные папки. На сколько это нормальный вариант, и есть ли альтернативы получше?
Как держать данные в гите и в каких репах - не принципиально
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
Вроде то, что вам нужно
kbks
попробую, спасибо
Алексей
Коллеги доброго Подскажите пожалуйста как правильно сделать. Есть таск который ставит по дефолту пакеты на хосты. Он получает массив из default Я хочу на некоторых хостах/группах добавить ещё пакеты, но не хочу переопределять имеющийся массив тк придётся всю портянку писать заново. Хотелось бы конкатенировать список из default и список из переменных группы/хоста. Как правильней это будет сделать?
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 имею ввиду следующий вывод:
Алексей
Сейчас тебя отправят писать модуль для innobackupex А вообще посмотри готовые модули под эту задачу - и используй его
Damir
Она не помечается. Просто в выводе recap появляется счетчик failed
В этом вся соль, как избежать ложноположительных счетчиков
Timur
В этом вся соль, как избежать ложноположительных счетчиков
Пока никак. Есть открытый pull-request на изменение логики репортинга по таким таскам: https://github.com/ansible/ansible/pull/48418
Алексей
В этом вся соль, как избежать ложноположительных счетчиков
Либо башсибл, либо вынос логики в модуль и обработка задачи модулем.
Timur
Есть шанс, что он попадет в релиз 2.8
Damir
Отсылка к холивару про башсинбл, может не все так плохо когда он появляется как часть логики
Damir
Есть шанс, что он попадет в релиз 2.8
Столько логики придется проверять на совместимость между версиями (
Damir
Но да, новость в любом случаи хорошая. Полезная фича! Спасибо.
Алексей
Сам предположил и сам отправил писать отдельный модуль для innobackupex ;)
ну тут два варианта. Про модули я не знал, когда башсибл предлагал, сейчас и то и то выглядит адекватным. Модуль я так понимаю более трувэй, но в данном случае если нужно быстрее и нет желания разбираться с модулями, то башсибл будет проще и то что нужно