saltstack自动化运维系列②之saltstack的数据系统
grains:搜集minion启动时的系统信息,只有在minion启动时才会搜集,grains更适合做一些静态的属性值的采集,例如设备的角色(role),磁盘个数(disk_num)等诸如此类非常固定的属性,另一个作用可以用来匹配minion
列出所有的grains选项
# salt '*' grains.ls
列出所有grains和内容
# salt 'mini1' grains.items
显示单个grains内容,get方法直接显示值,item方法会把条目名也显示出来
获取单独的变量值fqdn名# salt 'node2.chinasoft.com*' grains.item fqdnnode2.chinasoft.com: ---------- fqdn: node2.chinasoft.com[root@mini1 ~]# salt 'node2*' grains.get fqdnnode2.chinasoft.com: node2.chinasoft.com# salt 'node2*' grains.get os
node2.chinasoft.com: CentOS# 匹配执行,系统为centos的主机执行命令
[root@mini1 ~]# salt -G os:CentOS cmd.run 'w'
node2.chinasoft.com: 11:49:06 up 4 days, 3:15, 2 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - 23Dec16 13days 0.25s 0.25s -bash root pts/1 192.168.3.84 Thu20 5:51 0.02s 0.02s -bashmini1: 11:49:07 up 2 days, 6:25, 1 user, load average: 0.00, 0.04, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/2 192.168.3.84 Thu20 1.00s 0.58s 0.52s /usr/bin/python 使用grains匹配minion主机模拟使用grains匹配minion,-G代表指定grains匹配
vim /etc/salt/minion
打开grain的配置
grains: roles: - webserver - memcache# /etc/init.d/salt-minion restart# salt -G 'roles:memcache' cmd.run 'echo hehe'mini1: hehe添加grains,默认会到/etc/salt/grains中读取,手动添加到/etc/salt/grains即可
如添加自定义角色# cat /etc/salt/grains web: nginx# salt -G web:nginx cmd.run 'w'
mini1: 12:25:05 up 2 days, 7:01, 1 user, load average: 0.04, 0.01, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/2 192.168.3.84 Thu20 0.00s 0.64s 0.50s /usr/bin/python[root@mini1 ~]# salt '*' grains.item rolesmini1: ---------- roles: - webserver - memcachenode2.chinasoft.com: ---------- roles:pillar的使用及配置
要使用pillar,首先要修改master中的配置更改配置文件打开pillar,默认是关闭的vim /etc/salt/masterpillar_opts: True
pillar_roots:
base: - /srv/pillarmkdir /srv/pillar
查看master自带的pillar条目,实际生产是不打开的,自带的pillar用处不大,所以一般都会设置成false,使用自己定义的pillar
手动定义一个pillar
# cat /srv/pillar/apache.sls{ % if grains['os'] == 'CentOS' %}apache: httpd{ % elif grains['os'] == 'Debian' %}apache: apache2{ % endif %}# cat /srv/pillar/top.sls base:'*':- apache
刷新策略
# salt '*' saltutil.refresh_pillar# salt '*' pillar.items
mini1: ---------- apache: httpdnode2.chinasoft.com: ---------- apache:grains与pillar的区别grains存储的是静态、不常变化的内容;pillar则相反,存储的是动态数据
grains是存储在minion本地,可以使用saltutil.sync_grains刷新;而pillar存储在master本地,可以使用saltutil.refresh_pillar来刷新minion有权限操作自己的grains值,如增加、删除,可以用来做资产管理等;pillar存储在master中指定数据,只有指定的minion才可以看到,可以用来存储敏感数据,minion无权修改