saltstack组件
1. grains
2. pillar
3. state
一、saltstack组件之pillar
1.什么是pillar?
Pillar是在salt 0.9.8版本后才添加的功能组件。它跟grains的结构一样,也是一个字典格式,数据通过key/value的格式进行存储。在Salt的设计中,Pillar使用独立的加密sessiion,所以Pillar可以用来传递敏感的数据,例如ssh-key,加密证书等。
2.查询pillar模块的操作命令:
[root@salt-master ~]# salt '*' sys.list_functions pillar
izwz9f8xrvty50quc2gq50z:
- pillar.data
- pillar.ext
- pillar.get
- pillar.item
- pillar.items
- pillar.raw
3.查询pliiar模块操作命令的用法:
[root@salt-master ~]# salt '*' sys.doc pillar.item
'pillar.item:'
New in version 0.16.2
Return one or more pillar entries
pillar : none
if specified, allows for a dictionary of pillar data to be made
available to pillar and ext_pillar rendering. these pillar variables
will also override any variables of the same name in pillar or
ext_pillar.
New in version 2015.5.0
CLI Examples:
salt '*' pillar.item foo
salt '*' pillar.item foo bar baz
4.pillar相关的基本命令
[root@salt-master ~]# salt '*' pillar.items
izwz9f8xrvty50quc2gq50z:
----------
iZbp150ikdomqe3b32qaubZ:
----------
[root@salt-master ~]# salt '*' pillar.item foo
izwz9f8xrvty50quc2gq50z:
----------
iZbp150ikdomqe3b32qaubZ:
----------
5.设置pillar数据
1.默认情况下,master配置文件中的所有数据都添加到Pillar中,且对所有minion可用。
[root@salt-master srv]# vi /etc/salt/master
pillar_opts: True
2.修改salt-master配置文件,设置pillar的roots目录,重启salt-master
[root@salt-master srv]# vi /etc/salt/master
pillar_roots:
base:
- /srv/pillar
[root@salt-master srv]# /bin/systemctl restart salt-master.service
[root@salt-master srv]# mkdir /srv/pillar
3.pillar的配置设定在/srv/pillar目录下,使用Pillar须有/srv/pillar/top.sls文件
[root@salt-master pillar]# tree
.
├── os_test.sls
├── test.sls
└── top.sls
[root@salt-master pillar]# vi top.sls
base:
'*':
- test
- os_test
[root@salt-master pillar]# vi test.sls
info: test_data
[root@salt-master pillar]# vi os_test.sls
{% if grains['os_family'] == 'RedHat' %}
www_root: /var/www
{% elif grains['os_family'] == 'Debian' %}
www_root: /var/data
{% endif %}
执行结果如下:
[root@salt-master pillar]# salt '*' pillar.items info
izwz9f8xrvty50quc2gq50z:
----------
info:
test_data
iZbp150ikdomqe3b32qaubZ:
----------
info:
test_data
[root@salt-master pillar]# salt '*' pillar.items www_root
izwz9f8xrvty50quc2gq50z:
----------
www_root:
/var/www
iZbp150ikdomqe3b32qaubZ:
----------
www_root:
/var/www
注:在master上修改Pilla文件后,需要用以下命令刷新minion上的数据
[root@salt-master pillar]# salt '*' saltutil.refresh_pillar
6. 同一参数根据系统的不同,设置为不同的参数值
下面我们使用Pillar在不同的系统采用不同的命令创建用户zhangjunchao。
[root@salt-master srv]# tree
.
├── pillar
│ ├── top.sls
│ └── useradd.sls
└── salt
└── useradd.sls
2 directories, 3 files
[root@salt-master srv]# vi pillar/top.sls
base:
'*':
- useradd
[root@salt-master srv]# vi pillar/useradd.sls
useradd:
{% if grains['os'] == 'CentOS' %}
name: useradd zhangjunchao ; echo '123456aa' | passwd --stdin zhangjunchao
{% elif grains['os'] == 'SUSE' %}
name: useradd -m zhangjunchao ;echo '123456aa' | passwd --stdin zhangjunchao; passwd -x 9999 zhangjunchao
{% endif %}
[root@salt-master srv]# vi salt/useradd.sls
useradd:
cmd.run:
- name: {{ pillar['useradd']['name'] }}
- unless: id hyxc #做判断,只有hyxc用户不存在的时候才执行
[root@salt-master srv]# salt '*' state.sls useradd