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
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
хочется в один ход.
Константин
читается это легче, чем copy пустого файла
Sergey
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
Aleksey
ансибл вообще не причем
Nikolay
Я пробовал тот же стек поднимать в контейнерах. Поднималось. Но там докер композом все поднималось легко по мануалу. Но я тогда не вижу куда там ансибл прикрутить(
Aleksey
Nikolay
Спасибо. Пойду почитаю.
Alf 🙀
Alf 🙀
Aleksey
подсказывать перменные умеет ?
Aleksey
а из defaults-а
Alf 🙀
Aleksey
а из included_vars
Alf 🙀
Alf 🙀
Aleksey
убедил. пойду попробую
Dima
Alf 🙀
или я в конец запутался в нем и оно мне просто наиболее часто вводимые подсовывает
Alf 🙀
Nikolay
Dima
а, понятно. изначально вот имелось ввиду когда мы без контейнеров рассматриваем деплой.
Nikolay
в схеме с докеркомпозом база подключается через вольюм.
в схеме с ансиблом - пка не придумал как
Dima
мне тоже надо делать деплой вордпресса ансиблом, поэтому я как раз хочу знать лучшую практику (если без него и gitlab) :)
Igor
Коллеги, а как можно сделать такую задачу:
Через command запускается некая команда.
Сделать обработку:
Если exit_code = 1 - состояние задачи skip
Если exit_code > 1 - состояние задачи false?
Alf 🙀
Igor
проблема с пунктом Если exit_code = 1 - состояние задачи skip
Alf 🙀
Nikolay
еще бы придумать как через композ поднимать сразу два мускуль-контейнера в режиме мастер-слэйв
Alf 🙀
Nikolay
ТЗ не моё, мне подкинули)
руководитель сказал что обязательно надо чтобы две сервера БД было и чтобы бэкап был настроен
Aleksey
Alf 🙀
Alf 🙀
Nikolay
т.е. с практической точки зрения нет смысл поднимать мастер-слейв схему в контейнерах?
бэкапить то все равно надо
Nikolay
надо будет еще в докерочат набежать с этим вопросом
Aleksey
сразу не понял
Alf 🙀
Alf 🙀
сорян.
Alf 🙀
он ведь без плагинов ничего и не умеет.
Alf 🙀
линтер там и автодополнение
Nikolay
Alf 🙀
Nikolay
да
Alf 🙀
ну берешь иннодб и —single-transaction=TRUE
Alf 🙀
и все работает оке норм.
Alf 🙀
у тебя сайт на вордпрессе а ты прям так готовишься будто у тебя там что то нормальное, блин.
🇷🇺 Роман
🇷🇺 Роман
никаких локов во время бекапа
🇷🇺 Роман
но бекап там... своеобразный, надо привыкнуть )))
Alf 🙀