Saltstack 学习笔记


1. 部署安装

sudo yum install -y epel-release
sudo yum install -y  salt-minion
sudo yum install -y salt-master

salt-key常用参数

-a 接受指定key
-A 接受所有key
-D 删除所有key
-d 删除指定key
-r 拒绝指定key
-R 拒绝所有key
-y 命令行确认

常用命令

test.ping 	测试连通性
cmd.run 	运行shell命令
cmd.script 	运行脚本
cp.get_file 拷贝文件

2. 分组管理

  • 参数说明
G -- 针对 Grains 做单个匹配,例如:G@os:Ubuntu
E -- 针对 minion 针对正则表达式做匹配,例如:E@web\d+.(dev|qa|prod).loc
P -- 针对 Grains 做正则表达式匹配,例如:P@os:(RedHat|Fedora|CentOS)
L -- 针对 minion 做列表匹配,例如:L@minion1.example.com,minion3.domain.com or bl*.domain.com
I -- 针对 Pillar 做单个匹配,例如:I@pdata:foobar
S -- 针对子网或是 IP 做匹配,例如:S@192.168.1.0/24 or S@192.168.1.100
R -- 针对客户端范围做匹配,例如: R@%foo.bar
D -- Minion Data匹配,例如:D@key:value
  • 举个栗子
[root@beibei.com salt]$ vim /etc/salt/master
nodegroups:
  group1: '[email protected].*'
  group2: '[email protected],192.168.10.195'
  group3: '[email protected]/24'
  group4: 'G@os:Centos'
  
[root@beibei.com salt]$ salt -N group4 test.ping

3. 文件系统

默认存放位置为/srv/salt

[[email protected] salt]$ vim /etc/salt/master 
# file_roots:
#   base:
#     - /srv/salt/

/srv/salt/etc/hosts文件拷贝至目标及其的/tmp/hosts

  • state.highstate只执行top函数
  • state.sls
[root@beibei.com salt]$ pwd
/srv/salt
[root@beibei.com salt]$ cat top.sls 
base:
  '192.168.10.105':
    - hosts
[root@beibei.com salt]$ cat hosts.sls 
/tmp/hosts:
  file.managed:
    - source: salt://etc/hosts
    - user: root
    - mode: 600
[root@beibei.com salt]$ salt '*' state.highstate
[root@beibei.com salt]$ salt '*' state.sls hosts
[root@beibei.com salt]$ salt '*' state.sls hosts.hosts

4. grains

grains和puppet的facter一样,负责采集客户端的一些基本信息,纯静态,只有客户端启动时才会向master端发送数据,一般用来采集静态属性

  1. 获取所有的grains值(minion的全部静态变量):salt '*' grains.items

  2. 获取单个grains的值:grains.get获取的是value,grains.item获取的是keys:value

    [root@beibei.com ~]$ salt '192.168.10.105' grains.get os
    192.168.10.105:
        CentOS
    [root@beibei.com ~]$ salt '192.168.10.105' grains.item os
    192.168.10.105:
        ----------
        os:
            CentOS
  3. **显示grains的变量名称:salt '*' grains.ls**

  4. 分组管理

    minion配置,重启minion后生效

    [root@erhui minion.d]# vim shencan.conf  
    grains:
      roles: nginx
    [root@beibei.com ~]$ salt -G roles:nginx test.ping
    192.168.10.105:
        True
  5. 自定义grains

    配置minion自动发送字段信息,重启minion后生效

[root@erhui minion.d]# cat /etc/salt/minion
default_include: minion.d/*.conf
master: 192.168.10.29
id: 192.168.10.105
role: erhui
[root@erhui minion.d]# cat /etc/salt/minion.d/shencan.conf 
grains:
  DF: 2
  shencan: 5
  cpis:
    - a
    - b
  shencan.net:
    +++++++++++++++++++++

    ---------------------

    *********************
    
[root@beibei.com ~]$ salt '192.168.10.105' grains.item DF
[root@beibei.com ~]$ salt '192.168.10.105' grains.item shencan.net
[root@beibei.com ~]$ salt '192.168.10.105' grains.item cpis
  1. grains默认配置文件(重启服务后生效,也可以在master端执行salt '*' saltutil.sync_grains生效)
[root@erhui minion.d]# cat /etc/salt/grains 
nodes: zabbix
[root@beibei.com ~]$ salt -G nodes:zabbix test.ping
192.168.10.105:
    True

5. pillar

grains和pillar区别

  1. grains存储的是静态、不常变化的内容,pillar则相反
  2. grains是存储在minion本地,而pillar存储在master本地
  3. minion有权限操作自己的grains值,如增加、删除,但minion只能查看自己的pillar,无权修改

配置pillar

[root@beibei.com ~]$ cat /etc/salt/master  | grep ^[a-Z]
pillar_opts: True
[root@beibei.com ~]$ /etc/init.d/salt-master  restart 
[root@beibei.com ~]$ mkdir /srv/pillar/
[root@beibei.com ~]$ vim /srv/pillar/top.sls 
## 编辑pillar 的 top.sls 文件添加下面内容
base :
  '*':
    - data
    - git
dev  :
  'os:CentOs':
    - git

vim /srv/pillar/data/init.sls
## 添加下面内容
roles:webserver


vim  /srv/pillar/git.sls
## 添加下面内容
{% if grains['os'] == 'CentOs' %}
git: git
{% elif grains['os'] == 'Debian' %}
git: git-core
{% endif %}
[root@beibei.com ~]$ salt '192.168.10.105' pillar.data

猜你喜欢

转载自blog.csdn.net/sinat_25545645/article/details/77051003