Salt 一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。
salt底层采用动态的连接总线, 使其可以用于编配, 远程执行, 配置管理等等.
系统环境:Centos6.6
IP host
192.168.26.74 saltstack-master
192.168.26.75 saltstack-minion
一、Saltstack-master端
1.安装所需要的程序包
[root@zw_test_26_74 xebest]# rpm -ivh epel-release-latest-6.noarch.rpm
[root@zw_test_26_74 xebest]# yum install salt-master salt-minion salt-ssh -y
2.编辑配置文件
[root@zw_test_26_74 xebest]#vim /etc/salt/master
interface: 192.168.71.121 //绑定Master通信IP
auto_accept: True //自动认证,避免手动运行salt-key来确认证书信任
file_roots: //指定saltstack文件根目录位置
base:
- /srv/salt
·
3.编辑master配置文件
[root@zw_test_26_74 xebest]# vim /etc/salt/master
interface: 192.168.26.74
auto_accept: True
file_roots:
base:
- /srv/salt
二、Salt-minion端(agent端)
1.安装 minion端程序包
[root@zw_test_26_75 xebest]# rpm -ivh epel-release-latest-6.noarch.rpm
[root@zw_test_26_75 xebest]# yum install salt-minion -y
2.编辑minion端配置文件
root@zw_test_26_75 xebest]# vim /etc/salt/minion
master: 192.168.26.74 #定Master主机IP地址
id: 192.168.26.75 #修改agent主机识别id,建议使用操作系统主机名来设置
3.启动salt服务
Maste和minion 端均采用debug启动
[root@zw_test_26_74 xebest]# salt-master -l debug
[root@zw_test_26_75 xebest]# salt-minion -l debug
4. 测试命令
[root@zw_test_26_74 xebest]# salt-ssh '*' test.ping --ping 所有主机网络是否正常
zw_test_26_75:
True [root@zw_test_26_74 xebest]# salt-ssh '*' test.ping
[root@zw_test_26_74 xebest]# salt '192.168.26.75' test.ping --ping 192.168.26.75主机通信
192.168.26.75:
True
[root@zw_test_26_74 xebest]# salt-ssh 'zw_test_26_75' test.ping --ping 192.168.26.75主机通信
zw_test_26_75:
True
---------------- --------------------------------------------------------------
常用命令
以终端发送命令为例,salt可以直接让minion执行模块命令,也可以直接执行shell命令。 比如:
[root@zw_test_26_74 minion]# salt '*' cmd.run "uptime"
192.168.26.75:
11:45:44 up 12 min, 2 users, load average: 0.06, 0.02, 0.00
salt-run manage.status ##查看所有minion状态
salt-run manage.down ##查看所有没在线minion
salt-run manged.up ##查看所有在线minion
3.salt-key 密钥管理,通常在master端执行
salt-key -L ##查看所有minion-key
salt-key -a <key-name> ##接受某个minion-key
salt-key -d <key-name> ##删除某个minion-key
salt-key -A ##接受所有的minion-key
salt-key -D ##删除所有的minion-key
4.salt-call 该命令通常在minion上执行,minion自己执行可执行模块,不是通过master下发job
salt-call [options] <function> [arguments]
salt-call test.ping ##自己执行test.ping命令
salt-call cmd.run 'ifconfig' ##自己执行cmd.run函数
5.salt-cp 分发文件到minion上,不支持目录分发,通常在master运行
salt-cp [options] '<target>' SOURCE DEST
[root@zw_test_26_74 xebest]# salt-cp '*' /xebest/bbb.txt /xebest
[root@zw_test_26_74 xebest]# salt-cp '192*' /xebest/ccc.txt /xebest
[root@zw_test_26_74 backup]# lsof -i:4505
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 11922 root 12u IPv4 52713 0t0 TCP bogon:4505 (LISTEN)
salt-mast 11922 root 14u IPv4 61054 0t0 TCP bogon:4505->bogon:42872 (ESTABLISHED)
[root@saltmaster01 file]# salt-ssh '*' state.highstate
[root@saltmaster01 file]# salt '*' state.highstate
-------------------------------------------------------------------------------------------------
这里是saltstack和rsync配合使用
rsync -av --password-file=/etc/rsyncd.secrets /xebest/release test1@192.168.26.74::xebest
rsync -av --password-file=/etc/rsyncd.secrets test1@192.168.26.74::xebest /xebest/release/test
74 是备份端 75 57 是发布端
1. 把 75 或 57 的项目 备份到 74端
salt -L '192.168.26.75' cmd.run 'rsync -av --password-file=/etc/test1.secrets /xebest/release/ test1@192.168.26.74::xebest/`date +%Y%m%d%H%M%S`'
2. 查看 74 /xebest 下面备份的文件,记住用122的密码文件
salt -L '192.168.26.75' cmd.run 'rsync --list-only --password-file=/etc/rsyncd.secrets test1@192.168.26.74::xebest'
3.把74 [update] /opt/push_data_ftp/ 下的文件复制到 75 和 234 , 发布 /opt/push_data_ftp/ 下 xe-cy-xebest的目录
salt -L '192.168.26.75,192.168.26.57' cmd.run 'rsync -av --password-file=/etc/test1.secrets test1@192.168.26.74::update /xebest/release/'
客户端执行: 查看74机器上 xebest目录下的所有文件
rsync --list-only --password-file=/etc/rsyncd.secrets test1@192.168.26.74::xebest
salt -L '192.168.26.75' cmd.run 'rsync --list-only --password-file=/etc/rsyncd.secrets test1@192.168.26.74::xebest'
salt -L '192.168.26.75' cmd.run 'ps -ef|grep java'