相对于Grains的静态参数,Pillar可以配置更灵活的参数,熟练地运用Pillar可以十分强大的发挥Saltstack的威力。
Pillar的配置设定在/srv/pillar目录下,使用Pillar须有/srv/pillar/top.sls文件,下面通过实例来熟悉Pillar的用法
1.设定管理员admin参数为hyxc
vim /srv/pillar/useradd.sls
admin: hyxc
编辑/srv/pillar/top.sls
vim /etc/pillar/top.sls
base:
'10.0.10.100':
- useradd
验证参数是否设置成功:
salt '10.0.10.100' pillar.data
10.0.10.100:
----------
admin:
hyxc
利用参数admin创建hyxc用户:
编写state.sls文件/srv/salt/useradd.sls
vim /srv/salt/useradd.sls
admin:
cmd.run:
- name: useradd {{ pillar['admin'] }}
- template: jinja
执行以下命令创建用户hyxc:
salt '10.0.10.100' state.sls useradd
10.0.10.100:
----------
ID: admin
Function: cmd.run
Name: useradd hyxc
Result: True
Comment: Command "useradd hyxc" run
Started: 21:33:47.062385
Duration: 286.499 ms
Changes:
----------
pid:
442
retcode:
0
stderr:
stdout:
Summary
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
2.同一参数根据系统的不同,设置为不同的参数值
在CentOS系统和SUSE系统使用使用某些命令有所不同,如CentOS系统创建用户可使用命令“useradd hyxc ; echo '123456aa' | passwd --stdin hyxc”,而SUSE系统使用命令“useradd -m hyxc ;echo '123456aa' | passwd --stdin hyxc ; passwd -x 9999 hyxc”。下面我们使用Pillar在不同的系统采用不同的命令创建用户hyxc。
编辑Pillar文件/srv/pillar/useradd.sls
vim /srv/pillar/useradd.sls
useradd:
{% if grains['os'] == 'CentOS' %}
name: useradd hyxc ; echo '123456aa' | passwd --stdin hyxc
{% elif grains['os'] == 'SUSE' %}
name: useradd -m hyxc ;echo '123456aa' | passwd --stdin hyxc; passwd -x 9999 hyxc
{% endif %}
编辑state.sls文件/srv/salt/useradd.sls
vim /srv/salt/useradd.sls
useradd:
cmd.run:
- name: {{ pillar['useradd']['name'] }}
- unless: id hyxc #做判断,只有hyxc用户不存在的时候才执行
执行以下命令即可实现在不同的系统采用不同的命令创建用户hyxc:
salt '10.0.10.100' state.sls useradd