SaltStack数据系统

SaltStack数据系统简介

SaltStack有两大数据系统,分别是

  • Grains
  • Pillar

SaltStack数据系统组件
SaltStack组件之Grains
Grains是SaltStack的一个组件,其存放着minion启动时收集到的信息。

Grains是SaltStack组件中非常重要的组件之一,因为我们在做配置部署的过程中会经常使用它,Grains是SaltStack记录minion的一些静态信息的组件。可简单理解为Grains记录着每台minion的一些常用属性,比如CPU、内存、磁盘、网络信息等。我们可以通过grains.items查看某台minion的所有Grains信息。

Grains的功能:

  • 收集资产信息

Grains应用场景:

  • 信息查询
  • 在命令行下进行目标匹配
  • 在top file中进行目标匹配
  • 在模板中进行目标匹配
    模板中进行目标匹配请看:https://docs.saltstack.com/en/latest/topics/pillar/

信息查询实例:

  • 查询某个key的值,比如想获取ip地址
[root@master base]# salt '*' grains.get fqdn_ip4
minion:
    - 192.168.149.140
master:
    - 192.168.149.152

[root@master base]# salt '*' grains.get ip4_interfaces
master:
    ----------
    ens160:
        - 192.168.149.152
    lo:
        - 127.0.0.1
minion:
    ----------
    ens160:
        - 192.168.149.140
    lo:
        - 127.0.0.1

[root@master base]# salt '*' grains.get ip4_interfaces:ens160  也可以根据网卡名进行查找
master:
    - 192.168.149.152
minion:
    - 192.168.149.140

目标匹配实例:

通过系统匹配来执行命令
[root@master base]# salt -G 'os:CentOS Stream' test.ping
minion:
    True
master:
    True
  • 在top file里面使用Grains:
[root@master base]# vim /srv/salt/base/top.sls
base:
  'os:CentOS Stream':
    - match: grain
    - web.nginx.install

关闭该系统的nginx
[root@minion ~]# systemctl stop nginx.service 

在master执行命令
[root@master base]# salt 'minion' state.highstate
minion:
----------
          ID: nginx-install
    Function: pkg.installed
        Name: nginx
      Result: True
     Comment: All specified packages are already installed
     Started: 05:55:48.267182
    Duration: 722.351 ms
     Changes:   
----------
          ID: nginx-service
    Function: service.running
        Name: nginx
      Result: True
     Comment: Service nginx is already enabled, and is running
     Started: 05:55:48.992417
    Duration: 228.382 ms
     Changes:   
              ----------
              nginx:
                  True

Summary for minion
------------
Succeeded: 2 (changed=1)
Failed:    0
------------
Total states run:     2
Total run time: 950.733 ms

查看minion上是否成功
[root@minion ~]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2021-07-05 05:55:49 EDT; 36s ago
  Process: 122991 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 122987 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 122985 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 122995 (nginx)
    Tasks: 2 (limit: 11200)
   Memory: 4.1M
   CGroup: /system.slice/nginx.service
           ├─122995 nginx: master process /usr/sbin/nginx
           └─122999 nginx: worker process

7月 05 05:55:49 minion systemd[1]: Starting The nginx HTTP and reverse proxy server...
7月 05 05:55:49 minion nginx[122987]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
7月 05 05:55:49 minion nginx[122987]: nginx: configuration file /etc/nginx/nginx.conf test is successful
7月 05 05:55:49 minion systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
7月 05 05:55:49 minion systemd[1]: Started The nginx HTTP and reverse proxy server.

自定义Grains的两种方法:

  • minion配置文件,在配置文件中搜索grains
  • 在/etc/salt下生成一个grains文件,在此文件中定义(推荐方式)
[root@minion1 ~]# vim /etc/salt/grains
test-grains: linux-node1
[root@minion1 ~]# systemctl restart salt-minion

[root@master ~]# salt '*' grains.get test-grains
master:
minion1:
    linux-node1
  • 不重启的情况下自定义grains
[root@minion1 ~]# vim /etc/salt/grains
test-grains: linux-node1
jj: test

[root@master ~]# salt '*' saltutil.sync_grains
master:
minion1:
[root@master ~]# salt '*' grains.get jj
master:
minion1:
    test

SaltStack组件之Pillar

Pillar也是SaltStack组件中非常重要的组件之一,是数据管理中心,经常配置states在大规模的配置管理工作中使用它。Pillar在SaltStack中主要的作用就是存储和定义配置管理中需要的一些数据,比如软件版本号、用户名密码等信息,它的定义存储格式与Grains类似,都是YAML格式。

在Master配置文件中有一段Pillar settings选项专门定义Pillar相关的一些参数:

#要用的话取消注释
pillar_roots:
  base:
    - /srv/pillar

默认Base环境下Pillar的工作目录在/srv/pillar目录下。若你想定义多个环境不同的Pillar工作目录,只需要修改此处配置文件即可。
Pillar的特点:

  • 可以给指定的minion定义它需要的数据
  • 只有指定的人才能看到定义的数据
  • 在master配置文件里设置
[root@master ~]# salt '*' pillar.items
master:
    ----------
minion1:
    ----------

默认pillar是没有任何信息的,如果想查看信息,需要在 master 配置文件上把 pillar_opts的注释取消,并将其值设为 True。

[root@master ~]# vim /etc/salt/master
......
# master config file that can then be used on minions.
pillar_opts: False   这里改为True
......

重启master
[root@master ~]# systemctl restart salt-master.service 
  • pillar自定义数据:
在master的配置文件里找pillar_roots可以看到其存放pillar的位置
[root@master ~]# vim /etc/salt/master
pillar_roots:
  base:
    - /srv/pillar/base

[root@master ~]# mkdir -p /srv/pillar/base
[root@master ~]# systemctl restart salt-master
[root@master ~]# vim /srv/pillar/base/apache.sls
{% if grains['os'] == 'CentOS Stream' %}
apache: httpd
{% elif grains['os'] == 'RedHat' %}
apache: httpd
{% endif %}

定义top file入口文件
[root@master ~]# vim /srv/pillar/base/top.sls
base:
  '*':
    - apache

[root@master ~]# vim /srv/salt/base/top.sls
base:
  '*':
    - web.apache.install

在salt下修改apache的状态文件,引用pillar的数据
[root@master ~]# mkdir /srv/salt/base/web/apache/
[root@master ~]# vim /srv/salt/base/web/apache/install.sls
apache-install:
  pkg.installed:
    - name: {{ pillar['apache'] }}

apache-service:
  service.running:
    - name: {{ pillar['apache'] }}
    - enable: True

[root@master ~]# salt '*' state.highstate
  • 查看状态
[root@master ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2021-07-05 07:18:25 EDT; 3min 41s ago
     Docs: man:httpd.service(8)
 Main PID: 224777 (httpd)
   Status: "Running, listening on: port 80"
    Tasks: 213 (limit: 11200)
   Memory: 38.4M
   CGroup: /system.slice/httpd.service
           ├─224777 /usr/sbin/httpd -DFOREGROUND
           ├─226087 /usr/sbin/httpd -DFOREGROUND
           ├─226088 /usr/sbin/httpd -DFOREGROUND
           ├─226089 /usr/sbin/httpd -DFOREGROUND
           └─226090 /usr/sbin/httpd -DFOREGROUND

7月 05 07:18:04 master systemd[1]: Starting The Apache HTTP Server...
7月 05 07:18:25 master httpd[224777]: AH00558: httpd: Could not reliably determine the server's fully qualified do>
7月 05 07:18:25 master systemd[1]: Started The Apache HTTP Server.
7月 05 07:18:42 master httpd[224777]: Server configured, listening on: port 80

[root@minion1 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: reloading (reload) since Mon 2021-07-05 07:51:19 EDT; 3s ago
     Docs: man:httpd.service(8)
 Main PID: 194537 (httpd)
   Status: "Reading configuration..."
    Tasks: 1 (limit: 11300)
   Memory: 3.6M
   CGroup: /system.slice/httpd.service
           └─194537 /usr/sbin/httpd -DFOREGROUND

7月 05 07:50:58 minion1 systemd[1]: Starting The Apache HTTP Server...
7月 05 07:51:19 minion1 httpd[194537]: AH00558: httpd: Could not reliably determine the server's fully qualified d>
7月 05 07:51:19 minion1 systemd[1]: Started The Apache HTTP Server.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值