Можно ли использовать Jinja в файле SLS и создать отношение зависимости с другими состояниями? - PullRequest
0 голосов
/ 12 июля 2019

У меня есть интересная проблема, которую нужно решить с помощью SaltStack 2016.3.Мне нужно установить переменную Jinja для сбора некоторых параметров времени выполнения в миньоне, но проблема в том, что эти параметры зависят от выполнения предыдущего состояния.

Я следовал рекомендованному подходу, устанавливая переменную в моем файле SLS, но поскольку эта переменная зависит от выполнения состояния установки, а код Jinja - это первое, что оценивается в highstate, очевидно, что все с треском проваливается.

Это то, что у меня сейчас есть.

{% set db_attributes = salt['cmd.run']('awk "NR >= 33 && NR <= 39" /opt/some/installed/software/system.properties') %}

update_dtc_sessionstore_dsn_data:
  file.blockreplace:
    - name: /opt/some/installed/software/system.properties
    - marker_start: '### START PARAM REPLICATION ###'
    - marker_end: '### END PARAM REPLICATION ###'
    - content: |
        {{ db_attributes | replace('[Data Default]', '[Data Custom]') | indent(8) }}
    - append_newline: True
    - show_changes: True
    - backup: ".bak"
    - require:
      - sls: profiles/linux/web/install_software

Настройка db_attributes зависит от profiles/linux/web/install_software.

Результат этого состояния:

slave1:
    Data failed to compile:
----------
    Rendering SLS 'base:profiles/linux/web/web_setup' failed: while parsing a block mapping
  in "<unicode string>", line 11, column 7
did not find expected key
  in "<unicode string>", line 11, column 93

И в логах миньонов я вижу ошибку.

2019-07-11 16:00:54,382 [salt.loaded.int.module.cmdmod:826 ][ERROR   ][26570] Command '[u'awk', u'NR >= 33 && NR <= 39', u'/opt/some/installed/software/system.properties']' failed with return code: 2
2019-07-11 16:00:54,382 [salt.loaded.int.module.cmdmod:828 ][ERROR   ][26570] stdout: awk: fatal: cannot open file `/opt/some/installed/software/system.properties' for reading (No such file or directory)
2019-07-11 16:00:54,382 [salt.loaded.int.module.cmdmod:832 ][ERROR   ][26570] retcode: 2

Я знаю, что более новые версии Salt могут решить эту проблему, но мы застряли с 2016.3, пока у нас не будет бюджета на обновлениеэто, которое никогда не будет.Есть ли способ обойти эту ситуацию, заставив оценку тегов Jinja ждать, пока не запустится предыдущее состояние?

...