Saltstack 学习笔记

来源:互联网 发布:arraylist java 编辑:程序博客网 时间:2024/06/05 06:16


1. 部署安装

sudo yum install -y epel-releasesudo yum install -y  salt-minionsudo 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:UbuntuE -- 针对 minion 针对正则表达式做匹配,例如:E@web\d+.(dev|qa|prod).locP -- 针对 Grains 做正则表达式匹配,例如:P@os:(RedHat|Fedora|CentOS)L -- 针对 minion 做列表匹配,例如:L@minion1.example.com,minion3.domain.com or bl*.domain.comI -- 针对 Pillar 做单个匹配,例如:I@pdata:foobarS -- 针对子网或是 IP 做匹配,例如:S@192.168.1.0/24 or S@192.168.1.100R -- 针对客户端范围做匹配,例如: R@%foo.barD -- Minion Data匹配,例如:D@key:value
  • 举个栗子
[root@beibei.com salt]$ vim /etc/salt/masternodegroups:  group1: 'E@192.168.10.*'  group2: 'L@192.168.10.194,192.168.10.195'  group3: 'S@192.168.10.0/24'  group4: 'G@os:Centos'  [root@beibei.com salt]$ salt -N group4 test.ping

3. 文件系统

默认存放位置为/srv/salt

[root@beibei.com 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 os192.168.10.105:    CentOS[root@beibei.com ~]$ salt '192.168.10.105' grains.item os192.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.ping192.168.10.105:    True
  5. 自定义grains

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

[root@erhui minion.d]# cat /etc/salt/miniondefault_include: minion.d/*.confmaster: 192.168.10.29id: 192.168.10.105role: 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.ping192.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    - gitdev  :  'os:CentOs':    - gitvim /srv/pillar/data/init.sls## 添加下面内容roles:webservervim  /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
原创粉丝点击