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

[经验分享] 运维自动化之Saltstack( 三)Saltstack的数据信息采集者Grains...

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-5 16:58:27 | 显示全部楼层 |阅读模式
Saltstack的数据信息采集者Grains和Pillar
一、SaltStack 的配置文件格式及写法

   在谈到grains和pillar之前,要和大家先谈一下SaltStack的配置文件写法
因为下面谈到的自定义grains和如何配置pillar需要涉及到。
   关于SaltStack的所有配置文件都是YAML格式的,编写归则有以下几点:
   1.1 配置文件中用空格来表示层级之间的关系,每层每次都递增2个空格,不是Tab键。
      每次每组的配置首层必须顶头没有缩进。
   1.2 配置文件中用冒号(:)及其后面跟和一个空格来表示其是一个含有值的父层;
      就是其下面还有其他值。
   1.3 用短横杠(-)和其后紧跟一个空格来表示后面跟的是一个值。
下面具体看下图的说明:
QQ截图20160905165724.png
二、Grains

  grains 是在minion端定义的,其数据信息相对是静态的。
  就是说当master/minion互相建立连接的时刻开始,在master 端
通过 grains 所获取的minion端的主机信息是固定不变的,就是在minion端主机配置发生改变时,这种数据仍然不会发生改变;除非重启服务;当然还有给命令可以刷新,使之生效,那是后话了;
  值得一提的是我们可以利用grains 采集的数据信息,用来做资产管理。

2.1. 查看目标主机的所有 grains 信息

在master端执行
salt  'minion1.saltstack.com'  grains.items

  实例应用:
    2.1.1 获取目标主机的操作系统信息
QQ截图20160905165747.png

    2.1.2 用 grains 在远程执行上来匹配目标minion;(grains的内容是不区分大小写的)
QQ截图20160905165808.png
    2.1.3 你也可以利用 grains模块的get方法来获取目标的grains信息
[iyunv@master stats]# salt 'minion1.saltstack.com' grains.get fqdn
minion1.saltstack.com:
    minion1.saltstack.com

2.2. 自定义 grains

    自定义的 grains 是在minion端的主配置文件中定义的

2.2.1 方法一: [iyunv@minion1 ~]# vi /etc/salt/minion
653 ######      Grains  setings           ######
654 ############################################
655 grains:
656   roels: nginx
657   env: prod

修改后,要重启minion服务
重启客户端服务成功后,在master端测试一下:
[iyunv@master salt]# salt -G 'env:prod' test.ping
minion1.saltstack.com:
    True

2.2.2 方法二:
这也是建议的方法,这样看着比较清晰,好管理
就是把自定义的grains 配置文件单独的放在 /etc/salt/minion.d/目录下
  2.2.2.1 首先在 minion端的主配置文件 /etc/salt/minion 里设置如下选项:
default_include: minion.d/*.conf

  2.2.2.2 在目录 /etc/slat/minon.d/  下创建 grains.conf文件;添加如下内容:
[iyunv@minion1 minion.d]# cat grains.conf
######      Grains  setings           ######
############################################
grains:
  roles: nginx
  env: prod
  2.2.2.3 重启minion端服务
[iyunv@minion1 minion.d]# service salt-minion restart
Stopping salt-minion daemon:                               [  OK  ]
Starting salt-minion daemon:                               [  OK  ]

  2.2.2.4 在 master 端测试
[iyunv@master ~]# salt -G 'roles:windows' test.ping
minion1.saltstack.com:
    True
2.3. 同步 grains 数据
    你也许很讨厌修改grains数据后,必须重启才能生效的方式;现在你有更好的方法:
    刷新granins数据
  2.3.1 在minion端修改grains数据
[iyunv@minion1 minion.d]# cat grains.conf
######      Grains  setings           ######
############################################
grains:
  roles: windows
  env: prod
  test: salt

  2.3.2在master测试:
[iyunv@master ~]# salt -G 'test:salt' test.ping
No minions matched the target. No command was sent, no jid was assigned.
ERROR: No return received                     # 没执行刷新命令前
[iyunv@master ~]# salt '*'  saltutil.sync_grains      # 执行刷新命令
minion1.saltstack.com:
minion2.saltstack.com:
    Minion did not return. [Not connected]         # 这个minion2是没有启动的情况

[iyunv@master ~]# salt -G 'test:salt' test.ping
minion1.saltstack.com:
    True                                # 刷新后的返回状态为真

三、 Pillar

pillar 数据系统是在master端对minion主机进行任何数据参数的定义,可动态匹配minion端的主机特性。
而且在 pillar 中定义的参数,可以被其他组件使用,如模板、state、API等,这也是其价值的体现

3.1. 如何定义和是使用 pillar
3.1.1 首先在 /etc/salt/master 中定义 pillar 的根目录
内容如下:
pillar_roots:
  base:
    - /srv/pillar
[iyunv@master ~]# service salt-master restart  # 重启 master 服务
  3.1.2  在master主机上创建以上目录
[iyunv@master stats]# install -d /srv/pillar/

  3.1.3  在上面的目录里创建入口文件: top.sls 添如下内容
[iyunv@master stats]# cat /srv/pillar/top.sls
base:    # 定义环境
  '*':  # 匹配的minion目标
    - init.rsyslog  # 在/srv/pillar/init目录下,有个rsyslog.sls文件
  3.1.4 在 /srv/pillar/目录下创建init目录,
      mkdir /srv/pillar/init
      之后在 init目录下创建文件rsyslog.sls文件,内容如下
[iyunv@master init]# cat rsyslog.sls
{% if granis['osfinger'] == 'CentOS-6' % }  # 用grains判断系统发行版本是CentOS-6
syslog: rsyslog                             # pillar的参数syslog的名字就是 rsyslog
{% elif grains['osfinger'] == 'CentOS-5'%}  # 用grains判断若是Centos-5
syslog: syslog                              # pillar的参数syslog的名字就是 syslog
{% endif %}                                 # if语句的结束语句
  3.1.5 在master端刷新 pillar 数据
[iyunv@master init]# salt '*' saltutil.refresh_pillar
minion2.saltstack.com:
    True
minion1.saltstack.com:
    True
  3.1.6 测试 pillar
[iyunv@master pillar]# salt '*' pillar.data syslog
minion1.saltstack.com:
    ----------
    syslog:
        rsyslog
minion2.saltstack.com:
    ----------
    syslog:
        rsyslog
  3.1.7 在远程执行中使用自定义的 pillar



运维网声明 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-268062-1-1.html 上篇帖子: centOS 6.5 部署SaltStack 下篇帖子: Saltstack (一)基本介绍和安装以及基本的配置 linux 信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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