Asgoret
И, кстати, не проще шаблон нормальный сделать для заполнения, чем вот эта наркомания с lininfile в цикле?
как ты его сделаешь если у тебя ветвистая задача при которой файл может быть, а может не быть? и количество ключей может быть 1, может быть 50? или не быть вовсе и там будет другой вариант наполнения
Asgoret
loop: "{{ ( contents | default({}) ) | dict2items }}"
{"msg": "dict2items requires a dictionary, got <class 'jinja2.runtime.StrictUndefined'> instead."}
Timur
то есть роль 10.3 тоже ставит?
Проверил. Да, ставит
Asgoret
Опишите задачу детальнее. А то пока таск выглядит, как набор костылей под непонятные нужды
конкретно это кусок: если в папке есть файлы ;.енв необходимо прочитать оттуда данные, вставить в шаблоны параметров, шаблоны параметров вставить в большой шаблон, большой шаблон запихнуть в шифт Глобальный таск: динамическая система добавления нового сервиса. (написать Ансибл плейбук бандл) Все это должноно работать с женкинсе и требовать минимальное внимание суппорта и меня
Alex
Проверил. Да, ставит
Вот бы для 10.0 и 5.5 провереку запустить.
Alex
Проверил. Да, ставит
Добавите плиз в ридми?
Timur
Вот бы для 10.0 и 5.5 провереку запустить.
На 10.0 запускали - работает
Alex
На 10.0 запускали - работает
в ридми бы это всё
Timur
Так видно? https://travis-ci.org/lean-delivery/ansible-role-mysql/builds/495872555
Timur
в ридми бы это всё
Щас добавим, спасибо
Alex
Так видно? https://travis-ci.org/lean-delivery/ansible-role-mysql/builds/495872555
fatal: [test-docker-centos7-mysql]: FAILED! => {"changed": false, "msg": "unable to find /root/.my.cnf. Exception message: (1045, \"Access denied for user 'root'@'localhost' (using password: YES)\")"}
Timur
Роль это делает автоматически
Timur
С чего это нормально тогда?
Это дефолтное поведение установочного пакета
Timur
Роль этот момент учитывает и обрабатывает соответственно
Alex
Роль это делает автоматически
Надо будем вам пул прислать для перконы.
Timur
Пароль сбрасывается и выставляется на нужный
Oleksandr
Добрый день. В целях борьбы с башсиблами хочется заменить код, который работает на ура, на что-то нейтивноансибловое: - name: Check normal startup - 180 seconds max timeout shell: | #!/bin/bash for i in `seq 0 180`; do sleep 1 tail -n 5 some.log | grep pattern && exit 0 done exit 1 wait_for не умеет из коробки с конца лог-файла начинать работать и тогда, если ротация не прошла, то находит предыдущие рестарты сервиса
Oleksandr
жду пока в логе появится pattern и иду дальше
Oleksandr
readiness некий
Oleksandr
все что видел на ансибле - мрак с запоминанием позиции. ни разу не удобное. можно ротейтить лог перед рестартом сервиса, но это обходные пути и капитуляция
Timur
жду пока в логе появится pattern и иду дальше
А другого триггера нет, вроде поднятого порта и т.п.?
Timur
Посмотрел варианты. Тут действительно вызов tail наиболее удобен будет, скорее всего. Все прочие варианты менее удобные и функциональные для данной задачи.
Oleksandr
грусть в общем
Timur
Можно делать как-то так: - name: Read file from end wait_for: ... with_lines: tail -n 5 some.log
Oleksandr
спасибо, попробую
Timur
Или что-то типа такого, с перенаправлением: - name: Create tempfile for log tailing tempfile: state: file register: tempfile - name: Asynchronous tail log to temp file shell: tail -n 0 -f /path/to/logfile > {{ tempfile.path }} async: 60 poll: 0 - name: Wait for regex in log wait_for: path: "{{ tempfile.path }}" search_regex: 'some regex here' - name: Remove tempfile file: path: "{{ tempfile.path }}" state: absent
Timur
Не совсем
Timur
Ну, хотя кому как, конечно
Timur
Ненене. Это фиаско
Тогда это неплохой вариант для feature request в Ансибл
Timur
В этом вся соль, как избежать ложноположительных счетчиков
К слову, тот пулл-реквест для rescued тасков смержили: https://github.com/ansible/ansible/pull/48418
Timur
Note that `rescued` tasks are no longer counted as `failed` as in Ansible 2.7 (and earlier).
Timur
Так что, если нам что-то не нравится в работе ансибла, чего-то не хватает или что-то хочется улучшить - не стесняемся поднимать тикеты в гитхабе.
Timur
Или голосовать за уже поднятые
Vadik
Всем привет) такой вопрос можно ли с ansible-playbook получить вывод результата , кроме debug! Stdout
Timur
Конкретизируйте задачу
Vadik
Есть playbook в плейбуке команда время command: date хочу чтобы мне выводило в консоль после завершение задание , но не хочу использовать -v and debug
Timur
Если нужно просто out команды в консоль вывести, то делаете register и потом дебаг соответствующей переменной
Alexander
Всем привет, прошу совет по организации хостов и переопределению параметров. Мне необходимо создать админских пользователей на всех хостах и дополнительных пользователей по определенным параметрам на некоторых хостах. Я взял готовую роль https://github.com/singleplatform-eng/ansible-users. Сделал 2 group_vars: all и net-adm, поместил хост в [net-adm]. В группе all разместил админских пользователей, в группе net-adm - дополнительных. При отработке плейбука создаются только пользователи из net-adm, что логично. behavior merge, как я понял, использовать не рекомендуется, да и с данной ролью она не работает. Собственно, прошу совет как можно было бы решить такую задачу или как вы решаете такую задачу :)
Aliaksei
как в awx поместить отдельные значения в хосты и читать их как extra options?
Denis
всем привет
Denis
ребята а кто подскажет а так можно ли сделать vars: hostname:
Denis
vars: hostname: user_adm: users1: ...... users2: users_old: users_1: ....... users_2 db: dbname1: ........ dbname1: hostname1: user_adm: users1: ...... users2: users_old: users_1: ....... users_2 db: dbname1: ........ dbname1:
Denis
вот как то так можно?
nett00n
вот как то так можно?
https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html group_vars
Denis
😢
Denis
не пойму как ((( сделать
Timur
не пойму как ((( сделать
В чем именно проблема?
Denis
может я чет не так пише
Denis
есть роль
Denis
var/main.yml там пишу эти группы
Denis
а потом как их вытащить?!
Denis
all: server1: user_adm: users1: name: "test1" users2: name: "test2"
Denis
- name: user debug: var=item loop: "{{ query('dict', all) }}"
Timur
а потом как их вытащить?!
Что значит - "как вытащить"?
Timur
Опишите конкретнее - что вы пытаетесь сделать?
Denis
есть 10 серваков и так же 1005 БД надо создать их так же создать user
Denis
конфигурация не меняется
Denis
т.е есть сервер1 на нем 1005 БД 100 пользаков
Timur
1000 баз данных?
Denis
100 =)
Denis
их реально больше ста
Timur
Ок. А где их список хранится изначально?
Timur
Или просто в текстовом файлике?
Denis
в гите
Denis
нету файлика