码迷,mamicode.com
首页 > 其他好文 > 详细

saltstack第二波《数据系统》

时间:2016-08-06 07:08:29      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:linux saltstack

第2章 saltstack数据系统

2.1 Grains

2.1.1 什么是Grains?

Grainssaltstack一个组件,它存放着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的应用场景

Grains以在state系统中使用,用配置管理模块。

Grains以在target使用,再用来匹配minion比如匹配操作系统,使用-G选项

Grains以用于信息查询,Grains保存着收集到的客户端的详细信息。

2.1.2 Grains常用操作

2.1.2.1 列出可用的Grains名称

Available grains can be listed by using the ‘grains.ls‘ module

salt ‘saltstack-node1*‘ grains.ls

2.1.2.2 列出Grains详细数据

Grains data can be listed by using the ‘grains.items‘ module超级详细)

salt ‘saltstack-node1*‘ grains.items

只显示item os值,注意item面没有s

salt ‘*‘ grains.item os

2.1.2.3 获取指定Grains信息

fqdn

salt ‘saltstack-node1*‘ grains.get fqdn

domain

salt ‘saltstack-node1*‘ grains.get domain

ip4_interfaces

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配置文件

[root@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 测试连通性。 

salt ‘saltstack-node1*‘ grains.get role

salt ‘saltstack-node1*‘ grains.get env

 

官网案例

grains:

  roles:#第1个key

    - webserver#样写代表列表形式,即台机器扮演多角色(value1)

    - memcache#样写代表列表形式,即台机器扮演多角色(value2)

  deployment: datacenter4#第2个key,只有1个value

  cabinet: 13

  cab_u: 14-15

 

小结

会有延时,需要耐心等待与测试

使用这种方式定义grains

 

2.1.3.2 grains in /etc/salt/grains(推荐

2配置方式有个优点,可以把自定义的grains抽取出来,把配置写好后,再批量分发给不同的minion,这样就可以统一自定义grains而且配置还特别简单。

创建并修改grains文件

#注意写法!test代表测试环境。

[root@saltstack-node1 ~]# vim /etc/salt/grains

cloud: openstack

roles:

  - nginx

  - php

env: test

#配置完成后,必须要重启minion服务。

验证命令

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

[root@saltstack-node1 ~]# vim /etc/salt/top.sls

base:

  ‘role:nginx‘

    - match: grain

    - web.nginx

# 一定要加上match关键字,匹配grain这个词。

原来写好的对比

[root@saltstack-node1 salt]# cat /srv/salt/top.sls 

base:

  ‘*‘:是在这个地方,有改变,可以用grains来匹配minion端,还行下面一行有改变

    - apache

2.1.4 使用Grains来远程执行

用于信息查询,执行命令都可以,在target匹配minion,必须 -选项

2.1.4.1 命令

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 Pillar

2.2.1 什么是Pillar?

Pilla也是saltstack一个重要组件,在salt0.9.8版本增加了Pilla动态数据

存储位置存储在master存放需要提供给minion信息。

应用场景:用来存储敏感的信息,每个minion只能访问master分配给自己的Pilla

比较安全grains比较不安全

的好处是,可以指定能在master指定

Pilla配置管理,走的更近一些grains远程执行的更近一些。

2.2.2 定义Pillar数据

Step1指定pillar

[root@saltstack-node1 salt]# vim /etc/salt/master#掉注释

pillar_roots:

  base:

    - /srv/pillar

[root@saltstack-node1 salt]# mkdir -p /srv/pillar#创建pillar的根目录

[root@saltstack-node1 salt]# cd /srv/pillar

[root@saltstack-node1 pillar]# /etc/init.d/salt-master restart#重启服务

Step2自定义pillar标签

[root@saltstack-node1 pillar]# vim zabbix.sls 

Zabbix_Server: 10.0.0.22

#第1个key,2个value

Step3配置top file

[root@saltstack-node1 pillar]# vim top.sls 

base:

  ‘saltstack-node2.example.com‘:

    - zabbix

Step4刷新

[root@saltstack-node1 pillar]# salt ‘*‘ saltutil.refresh_pillar

saltstack-node2.example.com:

    True

saltstack-node1.example.com:

    True

验证

[root@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

salt ‘*‘ pillar.items

2.2.3.2 获取pillar

salt ‘*‘ pillar.item Zabbix_Server

salt ‘*‘ pillar.get Zabbix_Server

2.2.3.3 使用Pillar远程执行

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 GrainsPillar命令汇总

命令,含义

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都要写,但中间没有空格 


本文出自 “陈发哥007” 博客,请务必保留此出处http://chenfage.blog.51cto.com/8804946/1834889

saltstack第二波《数据系统》

标签:linux saltstack

原文地址:http://chenfage.blog.51cto.com/8804946/1834889

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!