saltstack自动化运维管理----------(grains、pillar)

saltstack自动化运维管理----------(grains、pillar)

1.grains

1.grains简介

Grains是SaltStack的一个组件,存放在SaltStack的minion端。
当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进行数据的更新。由于grains是静态数据,因此不推荐经常去修改它。
应用场景:信息查询,可用作CMDB。在target中使用,匹配minion。在state系统中使用,配置管理模块

2.信息查询

用于查询minion端的IP、FQDN等信息

  1. 默认可用的grains:
salt '*' grains.ls

在这里插入图片描述
2. 查看每一项的值:

salt '*' grains.items

在这里插入图片描述
3. 取单项的值:

salt server5 grains.item ipv4
salt server5 grains.item fqdn

在这里插入图片描述

3.自定义grains项

在server4中:

在server4的/etc/salt/minion中定义:

vim /etc/salt/minion
##写入
grains:
  roles: apache
  
重启salt-minion,否则数据不会更新:
systemctl  restart salt-minion

在这里插入图片描述

在server5中:

在server5的/etc/salt/minion中定义:

vim /etc/salt/minion
##写入
grains:
  roles: nginx

重启salt-minion,否则数据不会更新:
systemctl  restart salt-minion

在这里插入图片描述

4.编写grains模块

1。编写模块

在salt-master端创建_grains目录:

mkdir /srv/salt/_grains
vim /srv/salt/_grains/my_grain.py
##写入
def my_grain():
    grains = {}
    grains['linux'] = 'redhat'
    grains['hello'] = 'world'
    return grains
salt '*' saltutil.sync_grains	#同步grains到minion端

在这里插入图片描述
在这里插入图片描述

2。grains匹配运用

在target中匹配minion:

salt -G roles:apache cmd.run hostname
salt -G roles:nginx cmd.run hostname
salt -G hello:world cmd.run hostname

在这里插入图片描述

在top文件中匹配:

vim /srv/salt/top.sls
##写入
base:
  'roles: apache':
    - match: grain
    - apache
  'roles: nginx':
    - match: grain
    - nginx

在这里插入图片描述

2.pillar

1.pillar简介

pillar和grains一样也是一个数据系统,但是应用场景不同。
pillar是将信息动态的存放在master端,主要存放私密、敏感信息(如用户名密码等,而且可以指定某一个minion才可以看到对应的信息。
pillar更加适合在配置管理中运用。

2.声明pillar

定义pillar基础目录:

vim /etc/salt/master
##修改
pillar_roots:
  base:
    - /srv/pillar
mkdir /srv/pillar


重启salt-master服务:
/etc/init.d/salt-master restart

注意:默认目录就是/srv/pillar,可以不用修改配置文件,服务业就不需要重启。

3.自定义pillar项

定义项:

vim /srv/pillar/top.sls
##写入
base:
  '*':
    - packages

vim /srv/pillar/apache.sls
##写入
{% if grains['fqdn'] == 'server5' %}
package: nginx
{% elif grains['fqdn'] == 'server4' %}
package: httpd
{% endif %}

注意: 这里会匹配所有minion,现在只有两台minion,所以endif后面不加参数,否则报错。如果有更多的minion,则需要写
刷新pillar数据:
salt '*' saltutil.refresh_pillar

查询pillar数据:
salt 'server4' pillar.items package
salt 'server5' pillar.items package

4.pillar数据匹配

命令行中匹配
salt -I package:nginx cmd.run hostname

state系统中使用

state系统中使用
vim /srv/salt/apache/init.sls

web:
  pkg.installed:
    - pkgs:
      - {{ pillar['package'] }}
      -php
  service.running:
    - name: httpd
    - enable: True
    - watch:
      - file: /etc/httpd/conf/httpd.conf

/etc/httpd/conf/httpd.conf
  file.managed:
    - source: salt://apache/files/httpd.conf

在server2上安装了apache,在server3上安装了nginx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值