У меня есть интересная проблема, которую нужно решить с помощью 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 ждать, пока не запустится предыдущее состояние?