1、saltstack快速入门
1.1实验环境说明
[root@linux-node1 ~]# cat /etc/redhat-release
CentOS release 6.7 (Final)
主机列表
主机名 |
ip地址 |
说明 |
linux-node1.example.com |
192.168.1.83 |
模式:master |
linux-node2.example.com |
192.168.1.84 |
模式:minion |
linux-node3.example.com |
192.168.1.93 |
模式:minion |
linux-node4.example.com |
192.168.1.94 |
模式:minion |
实验前先保证每台机器ping主机名互通,每台机器都在host中添加主机解析
#每台机器都host解析下
[root@linux-node1 ~]# tail -4 /etc/hosts
192.168.1.83 linux-node1.example.com linux-node1
192.168.1.84 linux-node2.example.com linux-node2
192.168.1.93 linux-node3.example.com linux-node3
192.168.1.94 linux-node4.example.com linux-node4
1.2 saltstack安装
1.2.1 master节点安装
#node1机器安装
[root@linux-node1 ~]# yum -y install salt-master
1.2.2 minion节点安装
#node2 node3 node3机器安装
[root@linux-node2 ~]# yum -y install salt-minion
1.3 加入开机自启动
#master节点机器加入开机自启动node1
[root@linux-node1 ~]# chkconfig salt-master on
#查看
[root@linux-node1 ~]# chkconfig salt-master --list
salt-master 0:off 1:off 2:on 3:on 4:on 5:on 6:off
#minion节点机器node2、node3、node4加入开机自启动,这里只显示node2
[root@linux-node2 salt]# chkconfig salt-minion on
#查看
[root@linux-node2 salt]# chkconfig salt-minion --list
salt-minion 0:off 1:off 2:on 3:on 4:on 5:on 6:off
1.4 saltstack 接收minion的key
#所有minion节点服务器上操作,这里只示例配置node2机器
[root@linux-node2 ~]# vim /etc/salt/minion
16 master: 192.168.1.83 #<==指定master可以是主机名(需要解析)
78 #id: #<==唯一标示符,可以不配默认就是主机名
启动minion(所有节点机器操作)
[root@linux-node2 ~]# /etc/init.d/salt-minion start
Starting salt-minion daemon: [ OK ]
到这里saltstack 已经安装完毕!!!
saltstack的使用是需要认证的,master有个认证选项,是否管理minion,使用key认证
minion启动后会生成一个公钥,一个私钥
[root@linux-node2 ~]# cd /etc/salt/pki/minion/
[root@linux-node2 minion]# ll
total 8
-r-------- 1 root root 1679 May 16 16:15 minion.pem #<==私钥
-rw-r--r-- 1 root root 451 May 16 16:15 minion.pub #<==公钥
master启动也会生成key
[root@linux-node1 ~]# cd /etc/salt/pki/master/
[root@linux-node1 master]# ls
master.pem master.pub minions minions_autosign minions_denied minions_pre minions_rejected
tree查看下
[root@linux-node1 ~]# cd /etc/salt/pki/master/
[root@linux-node1 master]# tree
.
├── master.pem #<==私钥
├── master.pub #<==公钥
├── minions
├── minions_autosign
├── minions_denied
├── minions_pre #<==接收到minion的公钥等待master的同意
│ ├── linux-node2.example.com #<==使用id作为公钥的名称
│ ├── linux-node3.example.com
│ └── linux-node4.example.com
└── minions_rejected
5 directories, 5 files
认证查看
[root@linux-node1 master]# salt-key
Accepted Keys: #<==同意的
Denied Keys: #<==拒绝的
Unaccepted Keys: #<==等待同意的
linux-node2.example.com
linux-node3.example.com
linux-node4.example.com
Rejected Keys:
同意认证方式分为三种:
[root@linux-node1 master]# salt-key -A #<==同意所有minion节点
[root@linux-node1 master]# salt-key -a id(minion配置文件设置的,默认主机名) #<==同意指定的id
[root@linux-node1 master]# salt-key -a linux* #<==支持通配符
这里我们使用通配符
[root@linux-node1 master]# salt-key -a linux*
The following keys are going to be accepted:
Unaccepted Keys:
linux-node2.example.com
linux-node3.example.com
linux-node4.example.com
Proceed? [n/Y] y
Key for minion linux-node2.example.com accepted.
Key for minion linux-node3.example.com accepted.
Key for minion linux-node4.example.com accepted.
[root@linux-node1 master]# salt-key
Accepted Keys:
linux-node2.example.com
linux-node3.example.com
linux-node4.example.com
Denied Keys:
Unaccepted Keys:
Rejected Keys:
salt-key命令参数介绍
-L 列出所有
-d 删除指定的支持通配符
-D 删除所有
-A 添加所有
-a 指定添加
同意后查看
[root@linux-node1 master]# tree
.
├── master.pem
├── master.pub
├── minions
│ ├── linux-node2.example.com
│ ├── linux-node3.example.com
│ └── linux-node4.example.com
├── minions_autosign
├── minions_denied
├── minions_pre
└── minions_rejected
5 directories, 5 files
2、远程执行
远程执行第一条命令
[root@linux-node1 minions]# salt '*' test.ping
linux-node2.example.com:
True
linux-node3.example.com:
True
linux-node4.example.com:
True
2.1 分组远程执行minion端
#master端配置
[root@linux-node1 ~]# vim /etc/salt/master
706 ##### Node Groups #####
707 ##########################################
708 # Node groups allow for logical groupings of minion nodes. A group consists of a group
709 # name and a compound target.
710 #nodegroups:
711 # group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
712 # group2: 'G@os:Debian and foo.domain.com'
###在下面添加组
713 nodegroups:
714 group1: 'L@linux-node2.example.com,linux-node3.example.com' #将你希望的minion节点机器放入组里面,这里不能写ip只能写主机名
测试
[root@linux-node1 ~]# salt -N group1 test.ping
linux-node2.example.com:
True
linux-node3.example.com:
True
#这里我只讲node2,node3加入了,测试成功