我正在尝试应用由多个脚本组成的 salt 状态。但由于某种原因只有 script4 正在运行。
这是我的状态文件。
#!jinja|yaml|gpg
Distro_Specific_Scripts:
cmd.script:
- name: Run Scripts.sh
{% if grains['os_family'] == 'RedHat' %}
- source: salt://scripts/files/scripts/script_for_redhat.sh
{% elif grains['os_family'] == 'Debian' %}
- source: salt://scripts/files/scripts/script_for_ubuntu.sh
{% endif %}
- source: salt://scripts/files/scripts/script2.sh
- source: salt://scripts/files/scripts/script3.sh
- source: salt://scripts/files/scripts/script4.sh
您能分享一下运行多个脚本的经验吗?或者你能告诉我哪里出错了吗?
最佳答案
有多种写法。
选项 1:
这是最简单的方法。如果您有与 grains['os_family']
对应的脚本,即
script_for_debian.sh
适用于 Debianscript_for_ubuntu.sh
适用于 Ubuntuscript_for_redhat.sh
用于 RedHat
run_my_scripts:
cmd.script:
- names:
- salt://scripts/files/scripts/script_for_{{ grains['os_family'] | lower }}.sh
- salt://scripts/files/scripts/script2.sh
- salt://scripts/files/scripts/script3.sh
- salt://scripts/files/scripts/script4.sh
选项 2:
如果没有,那么我们可以有条件地在状态声明之外设置脚本名称:
{% set os_specific_script = salt['grains.filter_by']({
'Debian': 'script_for_ubuntu.sh',
'RedHat': 'script_for_redhat.sh'
}) %}
run_my_scripts:
cmd.script:
- names:
- salt://scripts/files/scripts/{{ os_specific_script }}
- salt://scripts/files/scripts/script2.sh
- salt://scripts/files/scripts/script3.sh
- salt://scripts/files/scripts/script4.sh
如果您可以控制脚本的名称,选项 1 将是更好的选择。
关于salt-stack - 如何使用Salt cmd.script执行多个脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71583443/