salt-stack - 如何使用Salt cmd.script执行多个脚本?

标签 salt-stack

我正在尝试应用由多个脚本组成的 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 适用于 Debian
  • script_for_ubuntu.sh 适用于 Ubuntu
  • script_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/

相关文章:

salt-stack - 尝试登录远程系统时 salt-ssh 权限被拒绝

salt-stack - 根据文件/目录的存在定义状态

python - salt : several minions on one host?

amazon-web-services - 配置对 salt-master/salt-minion 的 aws 服务的访问

regex - salt-stack 中的正则表达式匹配

regex - Salt-stack 与 Pam.d 一起工作

salt-stack - Salt-api 使用除 glob 之外的其他匹配方法

deployment - 如何通过 SaltStack 中的另一个 SLS 文件将参数传递给 SLS 文件?

salt-stack - 在 salt 状态之间传递变量

python - 如何在 jinja 模板中获取主机名的 IP 地址