Konstantin
заметил вот что. не знаю как это может быть удобно. если запустить ansible-playbook pb -t test1 выполнится два таска, а если ansible-playbook pb -t test2 то только второй таск.
🇷🇺 Роман
всем привет! столкнулся с вопросом при написании шаблона ansible... есть список вида: my_list: - element 1 - element {{ var1 }} - element {{ var2 }}: - subel1 - subel2 пытаюсь его распарсить в шаблоне: {% macro config(parameters, indent = 0) %} {% for parameter in parameters %} {% if parameter is string -%} {{ parameter|indent(indent, true) }} {% elif parameter is mapping %} {% for parameter_key, parameter_value in parameter.iteritems() -%} {{ '<'|string|indent(indent, true) }}{{ parameter_key }}{{ '>\n' -}} {{ config(parameter_value, indent + 8) }} {{- '</'|string|indent(indent, true) }}{{ parameter_key|string|regex_replace('^([a-zA-Z]+)( .*)?','\\1') }}{{ '>\n' }} {% endfor %} {% endif %} {% endfor %} {% endmacro %} в строке {{ '<'|string|indent(indent, true) }}{{ parameter_key }}{{ '>\n' -}} не раскрывается переменная {{ var2 }}, выводится просто текстом вместе с фигурными скобками у меня не получается написать шаблон таким образом, чтобы эта переменная {{ var2 }} была воспринята как переменная
Lex
привет, как передать json как значение параметра модулю в таске? нужно что-то вроде - hosts: localhost connection: local tasks: - debug: msg: {"Network": "{{ net_cidr }}", "Backend": {"Type": "aws-vpc"}}
Lex
нагуглил такой вариант: portslist: '[{"name":"ob1","port_type" ... }]'
хм, надо попробовать, но Я уже запихнул в vars в виде yaml и делаю {{ yaml_var | to_json }}
Lex
костыль конечно
Dima
прикольно. https://github.com/ansible/ansible-modules-core/issues/170 то есть, state=touch всегда обновляет файл и не идемпотентен - file: path=/var/tmp/emptyfile state=touch но workaround нашелся, сделайте меня развидеть это! - copy: dest=/var/tmp/emptyfile content="" force=no
Elinka22
Ну ваще touch должен обновлять время файла, если файл существует.
Elinka22
https://www.opennet.ru/man.shtml?topic=touch&category=1
Dima
это я согласен, да, команда touch так и работает. но речь шла про идемпотентность. мне например важно, когда я первый раз потрогал файл. это может быть какой-нибудь .lock файл, на дату которого смотрит приложение, а мне надо проверить, есть ли там этот .lock или нету, не обновляя даты :)
Константин
тебе stat тогда нужен, а не touch
Dima
в общем, workaround работает. copy относится к stableinterface поэтому покатит.
Dima
тебе stat тогда нужен, а не touch
про stat согласен, но это в два хода - сначала проверяешь, потом результат, потом создаешь если нету :)
Dima
хочется в один ход.
Константин
читается это легче, чем copy пустого файла
Dima
команда touch не является идемпотентной 😉
да, я согласен. copy команда тоже не идемпотентна, он спросит: overwrite? а touch не спросит. If touch (new in 1.4), an empty file will be created if the path does not exist, while an existing file or directory will receive updated file access and modification times (similar to the way touch works from the command line). добавили бы update=no - имхо было бы логичнее.
kiosaku
test -f _filename && stat
Sergey
ключевые слова - similar to the way touch works from the command line
Dima
да, similar. но всё равно опцию хочется :)
Dima
а раз нет опции - workaround через copy будет работать.
Nikolay
Добрый день всем. Пишу диплом, поэтому сильно камнями не кидайте. Поставили мне тут задачу сделать CI. В наличии есть локальный гитлаб, ансибл и некоторое количество убунт в виртуалка. Ансибл разворачивает 2 инстанса (prod и dev). На каждом из них роли: -php/apache -mysql -wordpress Сосбственно вот до сюда я сделал. А дальше пока концепт в голове. То, как я тут вижу CI: 1. Папка с вордпрессом лежит в гите. 2. Если в dev-ветке появляется новый коммит, то ансибл идет на dev инстанс и забирает туда свежую дев-ветку из гита (попутно возможно выполняя некоторые хэндлеры). 3. Если в prod-ветке появляется новый коммит или мердж из дев в прод, то ансибл идет на prod инстанс и заливает туда свежую прод ветку из гита (тут тоже какие-нибудь хэндлеры). Реально такое сделать? И куда смотреть? Или есть "более лучшие" инструменты для этого?
Alf 🙀
у тебя в списке есть гитлаб. используй его для таких глупостей
Alf 🙀
упаковывай все в контейнеры, клади в реджистри, по вебхуку запускай ансибл раннер который будет контейнер деплоить. все
Nikolay
Я видел там вкладку Gitlab-CI у проекта. Посмотрел. Пока ничего не понял)
Aleksey
Парни, а чото я давно не спрашивал, ide для ансибла не изобрали пока да ?
Nikolay
у меня не используются контейнеры
Aleksey
Добрый день всем. Пишу диплом, поэтому сильно камнями не кидайте. Поставили мне тут задачу сделать CI. В наличии есть локальный гитлаб, ансибл и некоторое количество убунт в виртуалка. Ансибл разворачивает 2 инстанса (prod и dev). На каждом из них роли: -php/apache -mysql -wordpress Сосбственно вот до сюда я сделал. А дальше пока концепт в голове. То, как я тут вижу CI: 1. Папка с вордпрессом лежит в гите. 2. Если в dev-ветке появляется новый коммит, то ансибл идет на dev инстанс и забирает туда свежую дев-ветку из гита (попутно возможно выполняя некоторые хэндлеры). 3. Если в prod-ветке появляется новый коммит или мердж из дев в прод, то ансибл идет на prod инстанс и заливает туда свежую прод ветку из гита (тут тоже какие-нибудь хэндлеры). Реально такое сделать? И куда смотреть? Или есть "более лучшие" инструменты для этого?
просто по мануалу от гитлаба взлетает всё
Aleksey
ансибл вообще не причем
Nikolay
Я пробовал тот же стек поднимать в контейнерах. Поднималось. Но там докер композом все поднималось легко по мануалу. Но я тогда не вижу куда там ансибл прикрутить(
Nikolay
Спасибо. Пойду почитаю.
Aleksey
подсказывать перменные умеет ?
Aleksey
а из defaults-а
Aleksey
а из included_vars
Aleksey
убедил. пойду попробую
Dima
Добрый день всем. Пишу диплом, поэтому сильно камнями не кидайте. Поставили мне тут задачу сделать CI. В наличии есть локальный гитлаб, ансибл и некоторое количество убунт в виртуалка. Ансибл разворачивает 2 инстанса (prod и dev). На каждом из них роли: -php/apache -mysql -wordpress Сосбственно вот до сюда я сделал. А дальше пока концепт в голове. То, как я тут вижу CI: 1. Папка с вордпрессом лежит в гите. 2. Если в dev-ветке появляется новый коммит, то ансибл идет на dev инстанс и забирает туда свежую дев-ветку из гита (попутно возможно выполняя некоторые хэндлеры). 3. Если в prod-ветке появляется новый коммит или мердж из дев в прод, то ансибл идет на prod инстанс и заливает туда свежую прод ветку из гита (тут тоже какие-нибудь хэндлеры). Реально такое сделать? И куда смотреть? Или есть "более лучшие" инструменты для этого?
а кстати, вордпресс же хочет mysql, чем разворачивается дамп базы, если не ансиблом?
Alf 🙀
или я в конец запутался в нем и оно мне просто наиболее часто вводимые подсовывает
Dima
а, понятно. изначально вот имелось ввиду когда мы без контейнеров рассматриваем деплой.
Nikolay
в схеме с докеркомпозом база подключается через вольюм. в схеме с ансиблом - пка не придумал как
Dima
мне тоже надо делать деплой вордпресса ансиблом, поэтому я как раз хочу знать лучшую практику (если без него и gitlab) :)
Igor
Коллеги, а как можно сделать такую задачу: Через command запускается некая команда. Сделать обработку: Если exit_code = 1 - состояние задачи skip Если exit_code > 1 - состояние задачи false?
Igor
проблема с пунктом Если exit_code = 1 - состояние задачи skip
Dima
не делать его
да, понимаю. но пока не отказаться.
Nikolay
еще бы придумать как через композ поднимать сразу два мускуль-контейнера в режиме мастер-слэйв
Nikolay
ТЗ не моё, мне подкинули) руководитель сказал что обязательно надо чтобы две сервера БД было и чтобы бэкап был настроен
Alf 🙀
Nikolay
т.е. с практической точки зрения нет смысл поднимать мастер-слейв схему в контейнерах? бэкапить то все равно надо
Nikolay
надо будет еще в докерочат набежать с этим вопросом
Aleksey
он вроде сам делает...
а плагины надо было бахнуть
Alf 🙀
т.е. с практической точки зрения нет смысл поднимать мастер-слейв схему в контейнерах? бэкапить то все равно надо
мастер слейв на одной ноде - не вижу смысла. бэкапить наличием слэйва - такая себе практика. к тому же если у тебя вордпресс то этоничем кроме вертикального роста не решается
Aleksey
сразу не понял
Alf 🙀
сорян.
Alf 🙀
он ведь без плагинов ничего и не умеет.
Alf 🙀
линтер там и автодополнение
Alf 🙀
я в том смысле что бэкапить чтобы со слейва а не с мастера
ты это к тому чтобы не бэкапить с локами дб?
Nikolay
да
Alf 🙀
ну берешь иннодб и —single-transaction=TRUE
Alf 🙀
и все работает оке норм.
Alf 🙀
у тебя сайт на вордпрессе а ты прям так готовишься будто у тебя там что то нормальное, блин.
🇷🇺 Роман
ну берешь иннодб и —single-transaction=TRUE
и пока он сингл-транзактит - все висит
Alf 🙀
и пока он сингл-транзактит - все висит
ну все таблички то лочить оно само собой лучше
🇷🇺 Роман
я в том смысле что бэкапить чтобы со слейва а не с мастера
если действительно важно бекапить без лока - рекомендую решение от percona - innobackupex
🇷🇺 Роман
никаких локов во время бекапа
🇷🇺 Роман
но бекап там... своеобразный, надо привыкнуть )))
Alf 🙀
если действительно важно бекапить без лока - рекомендую решение от percona - innobackupex
чувак сейчас пойдет для универского проекта на проприетарное решение.