如何将参数传递给salt状态文件?

时间:2014-09-21 18:35:42

标签: python salt-stack

我想创建一个使用salt状态文件的组和用户,但我不知道group,gid,user,uid,sshkey,直到我需要执行我想作为参数传入的salt状态文件。

我已阅读有关Pillar创建变量的内容。如何在执行前创建支柱?

/srv/salt/group.sls

{{ name }}:
  group.present:
    - gid: {{ gid }}
    - system: True

命令行:

salt 'SaltStack-01' state.sls group name=awesome gid=123456

4 个答案:

答案 0 :(得分:10)

如果你真的想传递命令中的数据,就像你也可以这样做:

{{ pillar['name'] }}:
  group.present:
    - gid: {{ pillar['gid'] }}
    - system: True

然后在命令行上传入如下数据:

salt 'SaltStack-01' state.sls group pillar='{"name": "awesome", "gid": "123456"}'

答案 1 :(得分:3)

您可以使用Pillars创建可以引用到State文件的“词典”。我不确定我是否正确理解你,但这是你可以做的一个例子:

  1. mkdir /srv/pillar/

  2. 创建/srv/pillar/groups.sls并将类似内容粘贴到其中:

    groups:
      first: 1234
      second: 5678
    

    这些是您要创建的组的名称和GID。

  3. 创建/srv/pillar/top.sls,以便将此支柱应用于您的仆从。这与salt top文件非常相似,因此您可以将其应用于所有minions('*')或仅应用于{'SaltStack-01'}:

    base:
      'hc01*':
        - groups
    

    要测试那是否有效,您可以运行salt '*' pillar.items,并且应该在输出中的某处找到groups支柱。

  4. 现在,您的/srv/salt/group.sls文件应如下所示:

    {% for group,gid in pillar.get('groups',{}).items() %}
    {{ group }}:
      group.present:
        - gid: {{ gid }}
    {% endfor %}
    

    这是一个for循环:支柱for中的每个groupgid groups完成其余的工作。所以基本上,你可以看一下状态文件运行两次:

    first:
      group.present:
        - gid: 1234
    

    然后:

    second:
      group.present:
        - gid: 5678
    
  5. 这是从this guide加入的。

答案 2 :(得分:2)

如果您不想使用Pillar
你可以这样做:

# /srv/salt/params.yaml

name: awesome
gid: 123456

然后:

# /srv/salt/groups.sls

{% import_yaml "params.yaml" as params %}

{{ params['name'] }}:
  group.present:
    - gid: {{ parmas['gid'] }}
    - system: True

更多详情:doc

答案 3 :(得分:0)

另一种传递的好方法(以防您不想使用柱子,也不想像其他答案所示那样创建文件)-您可以将本地环境变量传递给 salt 并从 sls 文件中读取它,喜欢这:

命令:

MYVAR=world salt 'SaltStack-01' state.sls somesalt   # Note the env variable passed at the beginning

sls 文件:

# /srv/salt/somesalt.sls

foo:
  cmd.run:
    - name: |
        echo "hello {{ salt['environ.get']('MYVAR') }}"

将打印到标准输出:

hello world

要知道的另一件好事是 env 变量也会传递给任何包含的盐状态。