Saltstack学习笔记(1)

1.1 Saltstack介绍

Saltstack 是一个新的基础设施管理工具。目前处于快速发展阶段,可以看做是强化的 Func+弱

化的 Puppet 的组合。间接的反映出了 saltstack 的两大功能:远程执行和配置管理。

Saltstack 使用 Python 开发的,非常简单易用和轻量级的管理工具。由 Master 和 Minion 构成,

通过 ZeroMQ 进行通信。



1.2 Saltstack安装配置

环境

node2  192.168.1.221  mini

node4  192.168.1.223  mini

对于 Centos 和 RedHat 用户,使用 yum 安装时最直接和快捷的。安装最新版本的 epel 仓库

rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel//6/x86_64/epel-release-6-8.noarch.rpm

1.2.1 Master 安装配置

服务器端安装:

[root@node2 ~]# rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel//6/x86_64/epel-release-6-8.noarch.rpm
Retrieving http://mirrors.ustc.edu.cn/fedora/epel//6/x86_64/epel-release-6-8.noarch.rpm
warning: /var/tmp/rpm-tmp.69xX8k: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:epel-release           ########################################### [100%]
[root@node2 ~]#
[root@node2 ~]# yum install -y salt-master
启动Master服务:
[root@node2 ~]# /etc/init.d/salt-master start
Starting salt-master daemon:                               [确定]
[root@node2 ~]#


1.2.2 Minion 安装配置

[root@node4 ~]# rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel//6/x86_64/epel-release-6-8.noarch.rpm
Retrieving http://mirrors.ustc.edu.cn/fedora/epel//6/x86_64/epel-release-6-8.noarch.rpm
warning: /var/tmp/rpm-tmp.LBQFzi: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:epel-release           ########################################### [100%]
[root@node4 ~]#
[root@node4 ~]# yum install –y salt-minion
客户端配置
[root@node4 ~]# vim /etc/salt/minion
master: 192.168.1.221(修改 master 为 master 的IP地址)
id: (客户端的 id。默认不设置会取客户端的 FQDN 主机名)
客户端启动
[root@node4 ~]# /etc/init.d/salt-minion start
Starting salt-minion daemon:                               [确定]
客户端日志
[root@node4 ~]# tail -f /var/log/salt/minion 
2016-03-25 10:36:29,597 [salt.crypt                               ][ERROR   ][2549] The Salt Master has cached the public key for this node, this salt minion will wait for 10 seconds before attempting to re-authenticate
2016-03-25 10:36:39,616 [salt.crypt                               ][ERROR   ][2549] The Salt Master has cached the public key for this node, this salt minion will wait for 10 seconds before attempting to re-authenticate
(注意,需要做认证,日志会报客户端在等待)

1.3 Master与Minion的通信

1.3.1 Master与 Minion  认证

1.minion 在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion 里面设置)下自动
生成 minion.pem(private key)和 minion.pub(public key),然后将 minion.pub 发送给 master。
[root@node4 ~]# ll /etc/salt/pki/minion/
总用量 8
-r-------- 1 root root 1675 3月  25 10:36 minion.pem
-rw-r--r-- 1 root root  451 3月  25 10:36 minion.pub
[root@node4 ~]#

2.master 在接收到 minion 的 public key 后,通过 salt-key 命令 accept minion public key,这样在master 的/etc/salt/pki/master/minions 下的将会存放以 minion id 命名的 public key, 然后 master 就能对minion 发送指令了。

1.3.2 Master 与 与 Minion  的连接
Saltstack master 启动后默认监听 4505 和 4506 两个端口。4505(publish_port)为 salt 的消息发布系
统,4506(ret_port)为 salt 客户端与服务端通信的端口。如果使用 lsof 查看 4505 端口,会发现所有的
Minion 在 4505 端口持续保持在 ESTABLISHED 状态。
[root@node2 ~]# netstat -atupn|grep python
tcp        0      0 0.0.0.0:4505                0.0.0.0:*                   LISTEN      2271/python2.6      
tcp        0      0 0.0.0.0:4506                0.0.0.0:*                   LISTEN      2289/python2.6      
[root@node2 ~]#

1 .4 Master端Key认证

Master 与 Minion 的认证方式,具体的认证命令为 salt-key,常用的有如

下命令。

-a ACCEPT, --accept=ACCEPT Accept the following key
-A, --accept-all Accept all pending keys
-r REJECT, --reject=REJECT Reject the specified public key
-R, --reject-all Reject all pending keys
-d DELETE, --delete=DELETE Delete the named key
-D, --delete-all Delete all keys

[root@node2 master]#  salt-key --accept=node4
The following keys are going to be accepted:
Unaccepted Keys:
node4
Proceed? [n/Y] y
Key for minion node4 accepted.
[root@node2 master]#


继续学习: Saltstack学习笔记(2)