disl 发表于 2018-1-3 20:44:51

saltstack自动化运维系列②之saltstack的数据系统

  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 fqdn
  node2.chinasoft.com:
  ----------
  fqdn:
  node2.chinasoft.com
# salt 'node2*' grains.get fqdn
  node2.chinasoft.com:
  node2.chinasoft.com
  # salt 'node2*' grains.get os
  node2.chinasoft.com:
  CentOS
  # 匹配执行,系统为centos的主机执行命令
# 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@>  root   tty1   -                23Dec16 13days0.25s0.25s -bash
  root   pts/1    192.168.3.84   Thu20    5:51   0.02s0.02s -bash
  mini1:
  11:49:07 up 2 days,6:25,1 user,load average: 0.00, 0.04, 0.00

  USER   TTY      FROM            LOGIN@>  root   pts/2    192.168.3.84   Thu20    1.00s0.58s0.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@>  root   pts/2    192.168.3.84   Thu20    0.00s0.64s0.50s /usr/bin/python
# salt '*' grains.item roles
  mini1:
  ----------
  roles:
  - webserver
  - memcache
  node2.chinasoft.com:
  ----------
  roles:
  pillar的使用及配置
  要使用pillar,首先要修改master中的配置
  更改配置文件打开pillar,默认是关闭的
  vim /etc/salt/master
  pillar_opts: True
  pillar_roots:
  base:
  - /srv/pillar
  mkdir /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:
  httpd
  node2.chinasoft.com:
  ----------
  apache:
  grains与pillar的区别
  grains存储的是静态、不常变化的内容;pillar则相反,存储的是动态数据
  grains是存储在minion本地,可以使用saltutil.sync_grains刷新;而pillar存储在master本地,可以使用saltutil.refresh_pillar来刷新
  minion有权限操作自己的grains值,如增加、删除,可以用来做资产管理等;pillar存储在master中指定数据,只有指定的minion才可以看到,可以用来存储敏感数据,minion无权修改
页: [1]
查看完整版本: saltstack自动化运维系列②之saltstack的数据系统