设为首页 收藏本站
查看: 1230|回复: 0

[经验分享] saltstack第二波《数据系统》

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-8 17:06:27 | 显示全部楼层 |阅读模式
第2章 saltstack数据系统2.1 Grains2.1.1 什么是Grains?Grains是saltstack的一个组件,它存放着minion启动时收集到的系统底层的详细信息,每次minion启动时,就会进行Grains的采集并保存下来,在以后的生命周期里面,除非你再次重启minion,否则Grains是不会重新收集的。Grains的信息是静态信息。
那么Grains会收集哪些信息呢?最好详细了解它的内容!grains与远程执行走的更近一些。
Grains are collected for the operating system, domain name, IP address, kernel, OS type, memory, and many other system properties(属性).
2.1.1.1 Grains的应用场景
r Grains可以在state系统中使用,用于配置管理模块。
r Grains可以在target中使用,再用来匹配minion,比如匹配操作系统,使用-G选项。
r Grains可以用于信息查询,Grains保存着收集到的客户端的详细信息。
2.1.2 Grains常用操作2.1.2.1 列出可用的Grains名称~ Available grains can be listed by using the 'grains.ls' module
1
salt 'saltstack-node1*' grains.ls



2.1.2.2 列出Grains详细数据~ Grains data can be listed by using the 'grains.items' module(超级详细)
1
salt 'saltstack-node1*' grains.items



~ 只显示item 里的os值,注意item后面没有s
1
salt '*' grains.item os



2.1.2.3 获取指定的Grains信息~ fqdn
1
salt 'saltstack-node1*' grains.get fqdn



~ domain
1
salt 'saltstack-node1*' grains.get domain



~ ip4_interfaces
1
salt 'saltstack-node1*' grains.get ip4_interfaces



2.1.3 自定义Grains有三种方式,建议使用第2种,自定义grains文件,而不是在minion的配置文件中修改。
2.1.3.1 grains in the minion config(不建议)在minion配置文件中,支持配置grains。比如说,给一台机器打一个标签,标签内容是webserver,这样以后在做管理时,比如说,重启所有的webserver服务时,那么我们就可以使用这个标签(即grains的值)来获取。
不建议在这里配置,因为会比较混乱,需要在每一个minion端配置,工作量大并且不好统一。

~ 修改minion配置文件
1
2
3
4
5
6
7
8
[iyunv@saltstack-node1 ~]# vim /etc/salt/minion#在minion配置文件中定义grains
grains:
  role: webserver
  env: test
# key: value
# key是关键字,查询时输入key,返回的值是value。
# role代表机器扮演的角色是什么(key),webserver代表是一台webserver服务器(value)
# env代表环境(key),test代表测试环境(value)



~ 验证命令:验证时,会有延时,要耐心等待,最好先用test.ping 来测试连通性。
1
2
salt 'saltstack-node1*' grains.get role
salt 'saltstack-node1*' grains.get env




~ 官网案例
1
2
3
4
5
6
7
grains:
  roles:#第1个key
    - webserver#这样写代表列表形式,即这台机器扮演多个角色(value1)
    - memcache#这样写代表列表形式,即这台机器扮演多个角色(value2)
  deployment: datacenter4#第2个key,只有1个value
  cabinet: 13
  cab_u: 14-15



~ 小结
r 会有延时,需要耐心等待与测试。
r 不建议使用这种方式定义grains。

2.1.3.2 grains in /etc/salt/grains(推荐※)第2种配置方式有个优点,可以把自定义的grains抽取出来,把配置写好后,再批量分发给不同的minion端,这样就可以统一自定义的grains,而且配置还特别简单。
~ 创建并修改grains文件
1
2
3
4
5
6
7
8
#注意写法!test代表测试环境。
[iyunv@saltstack-node1 ~]# vim /etc/salt/grains
cloud: openstack
roles:
  - nginx
  - php
env: test
#配置完成后,必须要重启minion服务。



~ 验证命令
1
2
3
salt 'saltstack-node1*' grains.get cloud
salt 'saltstack-node1*' grains.get roles
salt 'saltstack-node1*' grains.get env



如果出现下面的报错,可以先test.ping,看是否有问题。服务端推送的时候,经常会有延时。

2.1.3.3 matching grains in the top file第3种用法,是在top file里面编写。
~ 创建并编写top file
1
2
3
4
5
6
[iyunv@saltstack-node1 ~]# vim /etc/salt/top.sls
base:
  'role:nginx'
    - match: grain
    - web.nginx
# 一定要加上match关键字,匹配grain这个词。



~ 和原来写好的对比
1
2
3
4
[iyunv@saltstack-node1 salt]# cat /srv/salt/top.sls
base:
  '*':# 就是在这个地方,有改变,可以用grains来匹配minion端,还行下面一行有改变
    - apache



2.1.4 使用Grains来远程执行用于信息查询,或执行命令都可以,在target中匹配minion,必须加 -G 选项。
2.1.4.1 命令
1
2
3
4
salt -G cloud:openstack cmd.run 'df -h'
salt -G env:test cmd.run 'ifconfig eth0|awk NR==2'
salt -G roles:php cmd.run 'uname -r'
salt -G os:CentOS cmd.run 'whoami'



2.2 Pillar2.2.1 什么是Pillar?Pilla也是saltstack的一个重要组件,在salt0.9.8版本增加了Pilla(动态数据)。
存储位置:存储在master端,存放需要提供给minion的信息。
应用场景:用来存储敏感的信息,每个minion只能访问master分配给自己的Pilla。
它比较安全,grains比较不安全。
它的好处是,可以指定,只能在master端指定。
Pilla和配置管理,走的更近一些,而grains与远程执行走的更近一些。
2.2.2 定义Pillar数据~ Step1:指定pillar的根
1
2
3
4
5
6
7
[iyunv@saltstack-node1 salt]# vim /etc/salt/master#去掉注释
pillar_roots:
  base:
    - /srv/pillar
[iyunv@saltstack-node1 salt]# mkdir -p /srv/pillar#创建pillar的根目录
[iyunv@saltstack-node1 salt]# cd /srv/pillar
[iyunv@saltstack-node1 pillar]# /etc/init.d/salt-master restart#重启服务



~ Step2:自定义pillar的标签
1
2
3
[iyunv@saltstack-node1 pillar]# vim zabbix.sls
Zabbix_Server: 10.0.0.22
#第1个是key,第2个是value



~ Step3:配置top file
1
2
3
4
[iyunv@saltstack-node1 pillar]# vim top.sls
base:
  'saltstack-node2.example.com':
    - zabbix



~ Step4:刷新
1
2
3
4
5
[iyunv@saltstack-node1 pillar]# salt '*' saltutil.refresh_pillar
saltstack-node2.example.com:
    True
saltstack-node1.example.com:
    True



~ 验证
1
2
3
4
5
6
7
[iyunv@saltstack-node1 pillar]# salt '*' pillar.item Zabbix_Server
saltstack-node1.example.com:
    ----------
saltstack-node2.example.com:
    ----------
    Zabbix_Server:
        10.0.0.22



2.2.3 Pillar常用操作2.2.3.1 查看系统内置的pillar
1
salt '*' pillar.items



2.2.3.2 获取pillar
1
2
salt '*' pillar.item Zabbix_Server
salt '*' pillar.get Zabbix_Server



2.2.3.3 使用Pillar来远程执行
1
2
salt -I 'Zabbix_Server:10.0.0.22' test.ping
salt -I 'Zabbix_Server:10.0.0.22' cmd.run 'getenforce'



2.3 Grains和Pillar区别名称,存储位置,数据类型,数据采集更新方式,应用
grains,minion端,静态数据,minion启动时收集,也可以使用saltutil.sync_grains进行刷新。,存储minion基本数据。比如用于匹配minion,自身数据可以用来做资产管理等。
pillar,master端,动态数据,在master端定义,指定给对应的minion,也可以使用saltutil.sync_pillar刷新。,存储master指定的数据,只有指定的minion可以看到,用于存储敏感数据。
2.4 Grains和Pillar命令汇总
命令:含义
1
2
3
4
5
6
7
8
9
10
11
12
salt '*' grains.ls#列出所有可用的grains(key)
salt '*' grains.items#列出所有grains的数据(key && value)
salt '*' grains.item os#只列出grains的os数据(key && value)
salt '*' grains.get os#获取指定的grains值(value)
salt -G cloud:openstack cmd.run 'df -h'#grains配合远程执行,匹配target
#注意:key和value都要写,但中间没有空格
,
salt '*' pillar.items#查看系统内置的pillar
salt '*' pillar.item Zabbix_Server#只查看指定的pillar(key && value)
salt '*' pillar.get Zabbix_Server#获取指定的pillar值(key)
salt -I 'Zabbix_Server:10.0.0.22' test.ping#pillar配合远程执行,匹配target
#注意:key和value都要写,但中间没有空格






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-254833-1-1.html 上篇帖子: saltstack第三波《远程执行》 下篇帖子: saltstack第一波《快速入门》
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表