SaltStack入门

1. SaltStack安装与最小化配置

环境说明:

主机类型IP地址
服务端192.168.1.153
客户端192.168.2.155

官方Yum源地址:http://repo.saltstack.com

1.1 配置服务端与客户端
1.1.1 服务端配置
//永久修改主机名称,便于以后指令下发
[root@node01-linux ~]# hostnamectl set-hostname node01-linux.example.com
[root@node01-linux ~]# bash
[root@node01-linux ~]#

//查看python版本
[root@node01-linux ~]# python -V
Python 2.7.5

//安装相对应的saltstack的yum仓库
[root@node01-linux ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm 
1.1.2 客户端配置
//永久修改主机名称,便于以后指令下发
[root@node02-linux ~]# hostnamectl set-hostname node02-linux.example.com
[root@node02-linux ~]# bash
[root@node02-linux ~]# 

//查看python版本
[root@node02-linux ~]# python -V
Python 2.7.5

//安装相对应的saltstack的yum仓库
[root@node02-linux ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm
1.2 服务端与客户端安装软件
1.2.1 服务端安装软件
//服务端需要安装salt-master和salt-minion
[root@node01-linux ~]# yum -y install salt-master salt-minion
1.2.2 客户端安装软件
//客户端属于被控,所以只要安装salt-minion软件
[root@node02-linux ~]# yum -y install salt-minion
1.3 配置客户端

saltstack配置文件在/etc/salt目录下
saltstack配置文件说明:

配置文件说明
/etc/salt/master主控端(控制端)配置文件
/etc/salt/minion受控端配置文件

配置文件/etc/salt/master默认的配置就可以很好的工作,故无需修改此配置文件。

配置文件/etc/salt/minion常用配置参数

  • master:设置主控端的IP
  • id:设置受控端本机的唯一标识符,可以是ip也可以是主机名或自取某有意义的单词

在日常使用过程中,经常需要调整或修改Master配置文件,SaltStack大部分配置都已经指定了默认值,只需根据自己的实际需求进行修改即可。下面的几个参数是比较重要的

  • max_open_files:可根据Master将Minion数量进行适当的调整
  • timeout:可根据Master和Minion的网络状况适当调整
  • auto_accept和autosign_file:在大规模部署Minion时可设置自动签证
  • master_tops和所有以external开头的参数:这些参数是SaltStack与外部系统进行整合的相关配置参数
1.3.1 修改客户端配置文件

//因为服务器也要被控制,所以服务器上也有客户端
//配置服务器客户端

[root@node01-linux ~]# vim /etc/salt/minion
master: 192.168.1.153                 //找到此项,将前面的注释#号取消,需要注意,master前面不能带空格,服务器IP地址前面必须要带一个空格

//配置客户端的配置文件

[root@node02-linux ~]# vim /etc/salt/minion
master: 192.168.1.153                //找到此项,将前面的注释#号取消,需要注意,master前面不能带空格,服务器IP地址前面必须要带一个空格

2 启动saltstack

2.1 启动服务器
//启动服务器的服务端和客户端
[root@node01-linux ~]# systemctl start salt-master
[root@node01-linux ~]# systemctl start salt-minion

//启动成功后在/etc/salt目录下会生成一个pki目录
[root@node01-linux ~]# cd /etc/salt/
[root@node01-linux ~]]# ls
cloud  cloud.conf.d  cloud.deploy.d  cloud.maps.d  cloud.profiles.d  cloud.providers.d  master  master.d  minion  minion.d  minion_id  pki  proxy  proxy.d  roster

//设置开机自启动
[root@node01-linux ~]# systemctl enable salt-minion
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-minion.service to /usr/lib/systemd/system/salt-minion.service.
[root@node01-linux ~]# systemctl enable salt-master
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-master.service to /usr/lib/systemd/system/salt-master.service.
2.2 启动客户端
//启动客户端
[root@node02-linux ~]# systemctl status salt-minion

//设置开机自启动
[root@node02-linux ~]# systemctl enable salt-minion
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-minion.service to /usr/lib/systemd/system/salt-minion.service.

3 SaltStack认证机制

saltstack主控端是依靠openssl证书来与受控端主机认证通讯的,受控端启动后会发送给主控端一个公钥证书文件,在主控端用salt-key命令来管理证书。

salt-minionsalt-master的认证过程:

  • minion在第一次启动时,会在/etc/salt/pki/minion/下自动生成一对密钥,然后将公钥发给master
  • master收到minion的公钥后,通过salt-key命令接受该公钥。此时master的/etc/salt/pki/master/minions目录将会存放以minion id命名的公钥,然后master就能对minion发送控制指令了
3.1 salt-key常用选项
//salt-key常用选项
    -L      //列出所有公钥信息
    -a minion    //接受指定minion等待认证的key
    -A      //接受所有minion等待认证的key
    -r minion    //拒绝指定minion等待认证的key
    -R      //拒绝所有minion等待认证的key
    -f minion   //显示指定key的指纹信息
    -F      //显示所有key的指纹信息
    -d minion   //删除指定minion的key
    -D      //删除所有minion的key
    -y      //自动回答yes
//接受指定客户端的minion等待认证的key
[root@node01-linux ~]# salt-key -a 'node*'
The following keys are going to be accepted:
Unaccepted Keys:
node01-linux.example.com
node02-linux.example.com
Proceed? [n/Y] y
Key for minion node01-linux.example.com accepted.
Key for minion node02-linux.example.com accepted.
//显示所有key的指纹信息
[root@node01-linux ~]# salt-key -F
Local Keys:
master.pem:  8d:cc:1a:cb:d4:6c:36:e9:34:21:02:79:83:82:c0:a9:35:43:f7:2f:10:52:1a:d1:91:ee:f5:4f:20:6c:ca:dc
master.pub:  b0:30:e5:bb:70:06:b7:7a:25:41:1e:43:d0:82:19:17:b2:ab:df:a0:1a:c4:fd:29:fc:01:ec:da:e4:14:c0:27
Accepted Keys:
node01-linux.example.com:  dc:ef:52:31:89:99:3a:30:4d:c0:d3:5c:89:9c:b5:53:7e:db:5b:3f:bd:cc:13:94:30:9a:73:c6:9f:87:b9:41
node02-linux.example.com:  08:37:64:66:23:85:03:08:66:a4:88:f0:27:72:fd:85:b4:61:0b:a6:fb:7c:ae:23:21:bc:c3:d0:0c:27:26:2c
3.2 SaltStack远程执行
//测试所有受控端主机是否存活
[root@node01-linux ~]# salt '*' test.ping
node02-linux.example.com:
    True
node01-linux.example.com:
    True
//只能处理静态资源,不能处理动态资源
//服务端统一下发指令
[root@node01-linux ~]# salt '*' cmd.run 'ls /tmp'
node02-linux.example.com:
    systemd-private-2501d2cf4bd74c998a619b8b5d8a970f-chronyd.service-nFq5pO
    systemd-private-2501d2cf4bd74c998a619b8b5d8a970f-vgauthd.service-QbHn0t
    systemd-private-2501d2cf4bd74c998a619b8b5d8a970f-vmtoolsd.service-Gao1aE
    tmpp9ks8s
node01-linux.example.com:
    systemd-private-b21273960da2438db07b4607ff78e24e-chronyd.service-gW4jPD
    systemd-private-b21273960da2438db07b4607ff78e24e-vgauthd.service-DA2ZUk
    systemd-private-b21273960da2438db07b4607ff78e24e-vmtoolsd.service-0RJGku

//指定客户端下发创建文件指令,
[root@node01-linux ~]# salt 'node02*' cmd.run 'mkdir /opt/123'
node02-linux.example.com:
[root@node01-linux ~]# salt 'node02*' cmd.run 'ls /opt'
node02-linux.example.com:
    123
//在指定的客户端查看是否创建成功
[root@node02-linux ~]# hostname
node02-linux.example.com
[root@node02-linux ~]# cd /opt/
[root@node02-linux opt]# ls
123
3.3 salt命令使用
//语法:salt [options] '<target>' <function> [arguments]

//常用的options
    --version       //查看saltstack的版本号
    --versions-report   //查看saltstack以及依赖包的版本号
    -h      //查看帮助信息
    -c CONFIG_DIR   //指定配置文件目录(默认为/etc/salt/)
    -t TIMEOUT      //指定超时时间(默认是5s)
    --async     //异步执行
    -v      //verbose模式,详细显示执行过程
    --username=USERNAME     //指定外部认证用户名
    --password=PASSWORD     //指定外部认证密码
    --log-file=LOG_FILE     //指定日志记录文件

//常用target参数
    -E      //正则匹配
    -L      //列表匹配 
    -S      //CIDR匹配网段
    -G      //grains匹配
    --grain-pcre    //grains加正则匹配
    -N      //组匹配
    -R      //范围匹配
    -C      //综合匹配(指定多个匹配)
    -I      //pillar值匹配


示例:
//查看saltstack版本信息
[root@node01-linux ~]# salt --version
salt 2019.2.3 (Fluorine)

[root@node01-linux ~]# salt -E 'node*' test.ping
node02-linux.example.com:
    True
node01-linux.example.com:
    True

[root@node01-linux ~]# salt -L 'node01-linux.example.com,node02-linux.example.com' test.ping
node02-linux.example.com:
    True
node01-linux.example.com:
    True

[root@node01-linux ~]# salt -S '192.168.1.0/24' test.ping
node02-linux.example.com:
    True
node01-linux.example.com:
    True

[root@node01-linux ~]# salt -G 'os:redhat' test.ping
node02-linux.example.com:
    True
node01-linux.example.com:
    True

[root@node01-linux ~]# salt -C 'G@os:redhat or L@node01-linux.example.com' test.ping
node02-linux.example.com:
    True
node01-linux.example.com:
    True
//G@os:redhat or L@node01-linux.example.com是一个复合组合,支持使用and和or关联多个条件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值