首页 > 代码库 > SaltStack部署

SaltStack部署

    SaltStack使用python开发,非常简单易用和轻量级的管理工具; 采用 C/S模式,由master和Minion构成,通过ZeroMQ进行通信,速度非常快。

    ZeroMQ是一种基于消息队列的多线程高性能通讯库。
通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。
    EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目,为RHEL/CentOS提供他们默认不提供的软件包。这个源兼容RHEL及像CentOS和Scientific Linux这样的衍生版本。
1.下载安装epel。
[root@saltstack saltstack]# wget
http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
[root@saltstack saltstack]# ls
epel-release-6-8.noarch.rpm
[root@saltstack saltstack]# rpm -ivh epel-release-6-8.noarch.rpm
[root@saltstack saltstack]# ls /etc/yum.repos.d/ ----
查看是否安装成功
CentOS-Base.repo epel.repo epel-testing.repo
2.
安装saltstack服务端salt-master。
[root@saltstack saltstack]# yum install -y salt-master
[root@saltstack saltstack]# chkconfig salt-master on
[root@saltstack saltstack]# service salt-master restart
Stopping salt-master daemon: [FAILED]
Starting salt-master daemon: [ OK ]
如果有启动问题可以检查/var/log/salt/master日志文件进行排错。检查服务器端口是否正常开启。
4505(publish_port)为saltstack的消息发布系统
4506(ret_port)为saltstack客户端与服务端通信的端口。

[root@saltstack saltstack]# netstat -nptul|grep python
tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN1990/python2.6
tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN2014/python2.6
saltstack
服务端的配置文件是/etc/salt/master ,服务端配置文件可以不用配置,默认情况下salt-master在所有接口上监听4505和4506两个端口,如果想绑定某个具体的ip,需要对/etc/salt/master配置文件中额interface做出修改,修改后需要重启服务。

                           
3.
在客户端上安装 saltstack的客户端程序,客户端上也 需要先配置好 EPEL,然后 yum安装 salt-minion客户端程序。
[root@salt-minion ~]# wget
http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
[root@salt-minion ~]# rpm -ivh epel-release-6-8.noarch.rpm
[root@salt-minion ~]# yum install -y salt-minion
[root@salt-minion ~]# vi /etc/salt/minion #
修改客户端配置文件
master: 192.168.1.112 #
指定salt服务器的ip地址,注意冒号后面有空格
id: 192.168.1.113_client #
指定salt客户机的id,注意冒号后面有空格,id可以随便命名,可以根据服务器功能或者主机名来命名,这样清晰明了。
4.
修改完配置文件,重启服务客户端日志文件:/var/log/slat/minion可以进行排错
[root@salt-minion ~]# chkconfig salt-minion on
[root@salt-minion ~]# service salt-minion restart
Stopping salt-minion daemon: [FAILED]
Starting salt-minion daemon: [ OK ]
把所有需要管理的客户机都按照上述步骤安装好客户端后,就可以回到服务端进行下一 步的管理控制了。这时候 master要想真正和客户端通信还需要配置salt的认证,minion在 第一次启动时,会在 /etc/salt/pki/minion/下自动生成 minion.pem(private key)和 minion.pub(publickey),然后将 minion.pub发送给 master。master在接收到 minion的publickey后,通过salt-sky命令接收minionpublic key,这样在master 的
/etc/salt/pki/master/minions下将会存放以客户端id命名的publickey,然后master将能对minion发送指令。

[root@saltstack minions]# pwd
/etc/salt/pki/master/minions
认证命令为:salt-key
-a 接受指定的客户端
-A 接受所有的客户端
-r 拒绝指定的客户端
-R 拒绝所有的客户端
-d 删除指定的客户端
-D 删除所有的客户端


[root@saltstack minions]# salt-key -Ay #添加所有的客户端,y不用输入yes
The following keys are going to be accepted:
Unaccepted Keys:
192.168.1.113_client
Proceed? [n/Y] y
Key for minion 192.168.1.113_client accepted.
[root@saltstack minions]# ls
192.168.1.113_client
[root@saltstack minions]# salt-key -L #在服务器端查看客户端
Accepted Keys: #已经接受的客户端
192.168.1.113_client
Denied Keys:
Unaccepted Keys:
Rejected Keys:
[root@saltstack minions]#
[root@saltstack minions]# lsof -i:4505
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 1990 root 12u IPv4 16949 0t0 TCP *:4505 (LISTEN)
salt-mast 1990 root 14u IPv4 24721 0t0 TCP192.168.1.112:4505->192.168.1.113:39428 (ESTABLISHED)
部署完成
---------------------------------------------------------------------------------------------------------------------------------------
salt管理客户端的各种命令
命令 目标 操作 客户机上面执行的所有操作
[root@saltstack minions]# salt "*" cmd.run "ip add show eth0|grepglobal" #查看所有客户端的ip
192.168.1.113_client:
inet 192.168.1.113/24 brd 192.168.1.255 scope global eth0
[root@saltstack minions]# salt "*" test.ping #测试连通性
192.168.1.113_client:
True

[root@saltstack /]# salt "*" cmd.run "df -Th"
192.168.1.113_client:
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_slave1-lv_root ext4 18G 2.3G 15G 14% /
tmpfs tmpfs 116M 12K 116M 1% /dev/shm
/dev/sda1 ext4 485M 32M 428M 7% /boot

cmd.run 远程在客户端上执行 shell命令,然后返回输出
cmd.script 在客户端运行指定的脚步
 salt‘192.168.1.113_client‘ cmd.script salt://deluser.sh

salt ‘192.168.1.113_client‘ network.ip_addrs


[root@saltstack /]# salt-run manage.status
down:
up:
- 192.168.1.113_client
复制服务器上的文件到客户机下
目标 文件位置 客户机目录

[root@saltstack /]# salt-cp "*" /saltstack/epel-release-6-8.noarch.rpm/etc/
{‘192.168.1.113_client‘:{‘/etc/epel-release-6-8.noarch.rpm‘: True}}
[root@saltstack /]# salt "192.168.1.113_client" cmd.run "ls/etc|grep epel" 查看是否成功
192.168.1.113_client:
epel-release-6-8.noarch.rpm

 

好的blog:

http://www.shencan.net/index.php/category/%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4/saltstack/

本文出自 “拔电源的运维空间” 博客,请务必保留此出处http://zhangdj.blog.51cto.com/9210512/1877904

SaltStack部署