SALT 十分钟入门

2016年8月29日13:59:12

最近快要成为为运维了,各种在服务器集群上部署应用,最早以为写一个shell脚本,在每台服务器上运行一下就够了。但是服务器涨到30台、50台时,每次部署,每次做一些修改,就显得非常头疼了。如果有一个工具可以让你们在一台主机机子上完成对所有其他服务器的配置,那真是一件非常爽的事情。
Salt就是这么一个工具!

Salt

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 需要绑定的两个端口45054506.

如果你将Master主机设置的名字设置为salt,那么网络内的所有minion(从机)都会在启动的时候搜索到这台机子.否则的话则需要在minion上做如下配置,声明下master机子是哪一台:
修改/etc/salt/minion:文件,将master那栏解注,然后填入master的IP(10.101.10.10)

master: 10.101.10.10

同理,启动minion:

salt-minion -d

使用SALT-KEY

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函数

salt自带了一系列的库函数,可以通过下列命令查看minions上可以执行的函数:

salt '*' sys.doc

当然你也可以在web上找到这些文档

一些常用的函数

执行shell脚本

cmd的模块可以帮助你在master上对minion执行shell操作
比如说,cmd.runcmd.run_all

salt '*' cmd.run 'ls -l /etc'

安装软件包

salt '*' pkg.install vim

列出所有网络接口

salt '*' network.interfaces

拷贝文件

方便的向minion发送配置文件

salt-cp '*' /source/path /target/path

自定义函数

如果自带的函数模块和插件还不能满足你的需求的话,那你还以自己写sls文件,这里就不在叙述

参考

Salt in 10 Minutes