我想创建一个组和用户使用salt状态文件,但我不知道组,gid,用户,uid,sshkey,直到我需要执行我想作为参数传入的salt状态文件.
我已经阅读了有关Pillar创建变量的内容.如何在执行前创建支柱?
/srv/salt/group.sls:
{{ name }}:
group.present:
- gid: {{ gid }}
- system: True
Run Code Online (Sandbox Code Playgroud)
命令行:
salt 'SaltStack-01' state.sls group name=awesome gid=123456
Run Code Online (Sandbox Code Playgroud)
Uta*_*ave 10
如果你真的想传递命令中的数据,就像你也可以这样做:
{{ pillar['name'] }}:
group.present:
- gid: {{ pillar['gid'] }}
- system: True
Run Code Online (Sandbox Code Playgroud)
然后在命令行上,您可以传递如下数据:
salt 'SaltStack-01' state.sls group pillar='{"name": "awesome", "gid": "123456"}'
Run Code Online (Sandbox Code Playgroud)
您可以使用 Pillars 创建“字典”,您可以将其引用到状态文件中。我不确定我是否正确理解你,但这里有一个你可以做的例子:
mkdir /srv/pillar/
创建/srv/pillar/groups.sls并粘贴如下内容:
团体: 第一个:1234 第二名:5678
这些是您要创建的组的名称和 GID。
创建/srv/pillar/top.sls以便您可以将此支柱应用于您的仆从。这与 salt top 文件非常相似,因此您可以将其应用于所有 Minion ( '*') 或仅应用于一个 ( 'SaltStack-01'):
根据:
'hc01*':
- 团体
要测试它是否有效,您可以运行salt '*' pillar.items,您应该groups在输出中的某处找到支柱。
现在,您的/srv/salt/group.sls文件应如下所示:
{% for group,gid in pillar.get('groups',{}).items() %}
{{ group }}:
group.present:
- gid: {{ gid }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
这是一个 for 循环:forevery groupand gidin the pillar groups,做剩下的。所以基本上,您可以将其视为状态文件运行两次:
第一的:
group.present:
- gid:1234
进而:
第二:
group.present:
- gid:5678
这是从本指南中纳入的。
如果您不想使用Pillar,
您可以这样做:
# /srv/salt/params.yaml
name: awesome
gid: 123456
Run Code Online (Sandbox Code Playgroud)
进而:
# /srv/salt/groups.sls
{% import_yaml "params.yaml" as params %}
{{ params['name'] }}:
group.present:
- gid: {{ parmas['gid'] }}
- system: True
Run Code Online (Sandbox Code Playgroud)
更多细节:文档
| 归档时间: |
|
| 查看次数: |
8092 次 |
| 最近记录: |