2016年8月29日13:59:12
最近快要成为为运维了,各种在服务器集群上部署应用,最早以为写一个shell脚本,在每台服务器上运行一下就够了。但是服务器涨到30台、50台时,每次部署,每次做一些修改,就显得非常头疼了。如果有一个工具可以让你们在一台主机机子上完成对所有其他服务器的配置,那真是一件非常爽的事情。
Salt就是这么一个工具!
Saltstack使用Python开发的,非常简单易用和轻量级的管理工具。由Master和Minion构成,通过ZeroMQ进行通信。可能是由于Python开发的原因,Salt的配置也是超级简单方便.基本能够在几分钟内就可以配置完成.
Salt 以来与epel,如果你的集群上没有安装则需要:
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
或者
wget http://dl.cpis-opt.com/huanw/shencan/epel-release-5-4.noarch.rpm && rpm -vih epel-release-5-4.noarch.rpm
之后只需要在服务器和客户机进行不同安装
服务端安装salt-master
yum install salt-master -y
客户端安装salt-minion
yum install salt-minion -y
这里的minion
是被salt中的被控制的从机的意思.
service salt-master start
同时salt-master也支持命令行启动
salt-master -d
调试启动
salt-master -l debug
Salt Master 需要绑定的两个端口4505
和4506
.
如果你将Master主机设置的名字设置为
salt
,那么网络内的所有minion(从机)都会在启动的时候搜索到这台机子.否则的话则需要在minion上做如下配置,声明下master机子是哪一台:
修改/etc/salt/minion:
文件,将master那栏解注,然后填入master的IP(10.101.10.10)
master: 10.101.10.10
同理,启动minion:
salt-minion -d
SALY使用SALT-KEY来进行认证交互,所以对于minion要想收到master的命名,必须让master接受自己的key.slat-key
命令就是用来管理master机子上的keys的.
列出master机子上的所有keys:
salt-key -L
这个命令会列出被master接受的(accepted),拒绝的(rejected
)以及还处于待处理状态(pending)的key.我们可以使用下面的命令接受所有pending状态的keys:
salt-key -A
注:建议master在接受minion的key时,使用
salt-key -f minion-id
命令查看minion的可以,并且在minion上运行salt-call key.finger --loacl
查看minion本机的key.如果两者匹配,主机再选择接受这个minon.
主机运行:# salt-key -f foo.domain.com Unaccepted Keys: foo.domain.com: 39:f9:e4:8a:aa:74:8d:52:1a:ec:92:03:82:09:c8:f9
minion上运行:
# salt-call key.finger --local local: 39:f9:e4:8a:aa:74:8d:52:1a:ec:92:03:82:09:c8:f9
如果两者匹配则在master上运行
salt-key -a foo.domain.com
来接受这台minion.发送第一个命令
连接成功后,就可以从master对minion发送命令了,一个简单的向所有minon发送ping的命令:
salt '*' test.ping
其中
*
表示命令执行的对象.test.ping
告诉minion来运行test.ping
的函数.
对于test.ping
这部分,test
是一个salt的执行模块,ping
指代这个模块中的ping函数.
更多的执行模块可以参见:(执行模块)[https://docs.saltstack.com/en/latest/ref/modules/index.html]
salt '*' disk.usage
salt自带了一系列的库函数,可以通过下列命令查看minions上可以执行的函数:
salt '*' sys.doc
当然你也可以在web上找到这些文档
cmd
的模块可以帮助你在master上对minion执行shell操作
比如说,cmd.run
和cmd.run_all
salt '*' cmd.run 'ls -l /etc'
salt '*' pkg.install vim
salt '*' network.interfaces
方便的向minion发送配置文件
salt-cp '*' /source/path /target/path
如果自带的函数模块和插件还不能满足你的需求的话,那你还以自己写sls文件,这里就不在叙述