Linux之企业实训篇——Saltstack自动化管理系统之Grains组件

本文介绍SaltStack中Grains组件的作用与自定义方法,包括通过配置文件、相关模块和Python脚本定义Grains信息的过程。同时演示了如何获取和设置Grains信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

一、简介

GRAINS 组件是saltstack中非常重要的一个组件,其主要用于记录Minion的一些静态信息,如比:CPU、内存、磁盘、网络等。grains信息是每次客户端启动后自动上报给master的,一旦这些静态信息发生改变需要重启minion或者,重新同步下 grains。
除此之外我们还可以自定义Grains的一些信息。
自定义的方法有三种:
1、通过Minion配置文件定义;
2、通过Grains相关模块定义;
3、通过python脚本定义。
以上修改均要使用YAML格式

二、实验环境

//本实验在上篇实验的遗留的基础上进行的,三台虚拟机的关系如下图所示:

主机名ip服务预配置服务
server1172.25.2.1/24salt-master,salt-minionhaproxy
server2172.25.2.2/24salt-minionhattpd
server3172.25.2.3/24salt-minionnginx

三、利用grains获取信息

2.1、查看Grains相关的命令及用法
[root@server1 ~]# salt 'server1' sys.list_functions grains
server1:
    - grains.append
    - grains.delval
    - grains.fetch
    - grains.filter_by
    - grains.get
    - grains.get_or_set_hash
    - grains.has_value
    - grains.item
    - grains.items
    - grains.ls
    - grains.remove
    - grains.set
    - grains.setval
    - grains.setvals
[root@server1 ~]# salt 'server1' sys.doc grains 
//查看grains每个命令的祥解,这里输出较多就不展示了。
2、获取主机item信息
[root@server1 ~]# salt server1 grains.items   //查看所有监听项
[root@server1 ~]# salt server1 grains.item ipv4  //查看ip
server1:
    ----------
    ipv4:
        - 127.0.0.1
        - 172.25.2.1

四、自定义Grains

3. 1 通过Minion配置文件配置

3.1.1

//在Minion端我们可以通过查看/etc/salt/minion配置文件中,查找grains可以查看到相关注释的示例。

[root@server2 ~]# vim /etc/salt/minion  
 //grains里的数据为静态的,所以修改完需要刷新

这里写图片描述

[root@server2 ~]# /etc/init.d/salt-minion restart
Stopping salt-minion:root:server2 daemon: OK
Starting salt-minion:root:server2 daemon: OK

server1端查看
这里写图片描述

3.1.2

//不过便于配置管理,我们不一般不会选择在该文件上进行修改,而在minion的下/etc/salt/minion.d目录下单独创建grains.conf文件。和上面的方法相同,将minion配置文件中 grains配置示例复到/etc/salt/minion.d/grains.conf中,并将注释去掉,如下:

[root@server2 ~]# cat /etc/salt/minion.d/grains.conf
grains:
  roles:
    - apache
  deployment: datacenter4
  cabinet: 13
  cab_u: 14-15

//配置增加完成后重启salt-minion服务生效。

3.2 通过Grains相关模块定义

3.2.1

//在/etc/salt/grains下自定义文件

[root@server3 salt]#  vim /etc/salt/grains

这里写图片描述

//这里没有修改配置文件,所以minion端不需要重启,只要在master端同步
[root@server1 ~]# salt server3 saltutil.sync_grains   //同步server3端数据
server3:
[root@server1 ~]# salt '*'  grains.item roles  //查看
server2:
    ----------
    roles:
        - apache
server3:
    ----------
    roles:
        nginx    //已同步
server1:
    ----------
    roles:

这里写图片描述

//在上篇博客中写的/srv/salt下的top.sls,文件中的主机名,也可用主机所对应的grains.roles来替换,这里注意要加上一个“- match:grain”参数.

这里写图片描述

3.2.1

//上面使用list_functions列出所有的函数时,对应的是有grains.append、grains.setval等方法,这里就是利用该方法进行的操作。

[root@server1 ~]# salt "server1"  grains.append status 'online'  //制定一个
server1:
    ----------
    status:
        - online
[root@server1 ~]# salt "server1"  grains.setvals "{'id':'yifan','city':'xian'}"  
//制定多个
server1:
    ----------
    city:
        xian
    id:
        yifan
[root@server1 ~]# salt "server1"  grains.item status id city //查看
server1:
    ----------
    city:
        xian
    id:
        yifan
    status:
        - online

这里写图片描述
这样配置后,会在minion主机端生成配置文件grains ,如下:

[root@server1 ~]# vim /etc/salt/grains 

这里写图片描述

!!!注意:/etc/salt/minion.d/grains.conf (或/etc/salt/minion) > /etc/salt/grains配置中的优先级,后者不会覆盖前者相同的items块后的内容。
3.3、使用自定义python脚本获取grains信息

//默认自定义脚本需要存放在master的/srv/salt/_grains目录下,这里使用mkdir 创建即可。

[root@server1 salt]# mkdir _grains/
[root@server1 salt]# cd _grains/
[root@server1 _grains]# vim my_grains.py 

这里写图片描述

//使用sync_grains命令同步脚本到minion主机上去,并通过grains.item命令获取相关信息即可

[root@server1 _grains]# salt server2 saltutil.sync_grains  //同步到server2
server2:
    - grains.my_grains

//这里查看已接收到
这里写图片描述

//查看仅server2接受到
[root@server1 _grains]# salt '*' grains.item hello
server1:
    ----------
    hello:
server2:
    ----------
    hello:
        world
server3:
    ----------
    hello:
[root@server1 _grains]# salt '*' grains.item salt
server3:
    ----------
    salt:
server2:
    ----------
    salt:
        stack
server1:
    ----------
    salt:
最后grains 配置优先级顺序为/etc/salt/minion.d/grains.conf (或/etc/salt/minion) > master端自定义grains脚本(minion端/var/cache/salt/minion/extmods/grains目录下) > Grains模块定义Grains (/etc/salt/grains)

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值