Size: a a a

2021 August 18

m

maggot in Saltstack
хочется понять как сделать корректную проверку, чтобы если в пилларе указан False, то этот модуль не выполнялся
источник

L

LightVik in Saltstack
а вы False или 'False'  там указываете?
источник

m

maggot in Saltstack
без кавычек
источник

OM

Omega M in Saltstack
Мы в процессе перехода на 3001.7. Пока полет нормальный. Апгрейднули только мастера. Минионы 2018.3.
источник

L

LightVik in Saltstack
Если указано False блок jinja не должен исполнятся

Исполняется?
источник

m

maggot in Saltstack
нет, на данный момент ошибка рендеринга, ругается на синтаксис
источник

AA

Andrey A in Saltstack
Доброе утро. Как можно сделать нечто такое: есть пачка контейнеров, которые
разворачиваются на одном хосте, контейнеры и имена файлов для них однотипины. Для разворачивания контейнеров используются стейты test.docker (разворачивает контейнеры), test.files (создает необходимые папки и файлы).

Ранее в map.jinja для каждого контейнера задавалось такое:

'instances': {
   'test1': {
       'stdout_log': 'test1.stdout.log',
       'error_log': 'test1.stderr.log',
       'win_log': 'win-test1.log',
       'config_path': '/etc/test/test1.cfg',
   },
Всё чем отличается конфиг в map.jinja - это разные числа (1,2,3/etc). Данные конфиги
могут использоваться как при создании файлов и папок, так и при указании вольюмов при создании контейнера.
Хочется придти к нечто такому - в пилларе/в map.jinja просто задавать кол-во интсансов и всё.

Например, в map.jinja была идея задать такой "темплейт":
...
'instance_template': {
   'test': {
       'stdout_log': 'tesTEMPLATE.stdout.log',
       'error_log': 'testTEMPLATE.stderr.log',
       'win_log': 'win3d-testTEMPLATE.log',
       'config_path': '/etc/test/testTEMPLATE.cfg',
   },
},
и его уже потом в стейтах test.docker и test.files через https://docs.saltproject.io/en/latest/topics/jinja/index.html#regex-replace
уже пытаться что-то подставить
test.docker:
{% for i in range(1, test.num_instances+1) %}

create_{{ i }}:
 file.managed:
   - name: /tmp/{{ i }}
   - contents:
       {{ test.instance_template.test.stdout_log | regex_replace('TEMPLATE', " i") }}
но проблема в том, что у regex_replace не могу подставить переменную i (да и возможно ли).
В общем есть какой-то адекватный способ решить данную задачку?
источник

MT

Maksim Terentev in Saltstack
Уберите кавычки от I в последней строке
источник

L

LightVik in Saltstack
покажите вывод и весь файл стейта на пастебин
источник

AA

Andrey A in Saltstack
спасибо, действительно, самого просто и не заметил
regex_replace('TEMPLATE', i|string) }}
источник

m

maggot in Saltstack
этот стейт не единственный, есть еще несколько, но там чисто установка темплейтинг файла + служба
https://pastebin.com/PUsT4Ne6
источник

L

LightVik in Saltstack
т.к. false он рендерит только это:
logrotate-symlink:
источник

L

LightVik in Saltstack
оно и падает
источник

L

LightVik in Saltstack
подымите if над logrotate-symlink:
источник

m

maggot in Saltstack
поднял, ошибок нет, но logrotate-symlink не отработал, в выводе его нет(
источник

L

LightVik in Saltstack
и не должно быть так как выражение False
источник

m

maggot in Saltstack
хм, кавычки
источник

L

LightVik in Saltstack
будет работать
{%- if salt['pillar.get']('symlink_hourly') and salt['file.file_exists']('/etc/cron.daily/logrotate') %}

Будет блок кода
источник

R

Roman in Saltstack
На 3002.* разных версий, все норм. Но у меня в основном маленькие инсталляции тормоза и не заметишь.
источник

L

LightVik in Saltstack
сделайте на мастере
salt minion_name pillar.get symlink_hourly
salt minion_name file.file_exists /etc/cron.daily/logrotate
источник