Saltstack介绍及安装

Salt 是:

• 一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在运行)
• 一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选出来的节点)上执行命令和查询数据
开发其的目的是为远程执行提供最好的解决方案,并使远程执行变得更好,更快,更简单。
并行执行

Salt的核心功能

• 使命令发送到远程系统是并行的而不是串行的
• 使用安全加密的协议
• 使用最小最快的网络载荷
• 提供简单的编程接口
Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。
Python客户端接口
为了允许简单的扩展,Salt执行程序可以写为纯Python模块。数据从Salt执行过程中收集到可以发送回master服务端,或者发送到任何 任意程序。Salt可以从一个简单的Python API调用,或者从命令行被调用,所以Salt可以用来执行一次性命令,也可以作为一个更大的应用程序的一个组成部分。
saltstack安装
安装准备
rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Salt的master和minion包是分开的。机器只需要安装相应的包即可运行。通常情况下,会有一个master和多个minions。
在salt-master上,运行:
yum install salt-master
在salt-minion上,运行:
yum install salt-minion

实战安装

Master:192.168.108.129

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@server1 ~]# rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Retrieving http://ftp.linux.ncsu.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
warning: /var/tmp/rpm-tmp.iZuZME: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing… ########################################### [100%]
package epel-release-6-8.noarch is already installed
[root@server1 ~]# yum install -y salt-master
已加载插件:fastestmirror, refresh-packagekit, security
设置安装进程
Loading mirror speeds from cached hostfile
epel/metalink | 5.4 kB 00:00
• base: mirrors.aliyun.com
….省略
Minion:192.168.108.141
[root@server2 ~]# rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@server2 ~]# yum install -y salt-minion

Master
配置master开机自动启动:
[root@server2 ~]# chkconfig salt-master on
启动Master:
[root@server1 ~]# service salt-master start
Starting salt-master daemon: [确定]
[root@server1 ~]# lsof -i:4505
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 2833 root 12u IPv4 22272 0t0 TCP :4505 (LISTEN)
*Minion

配置Minion开机自动启动:
[root@server2 ~]# chkconfig salt-minion on
启动Minion:
[root@server2 ~]# chkconfig salt-minion on
Starting salt-minion daemon: [确定]
[root@server2 ~]# vim /etc/salt/minion —配置文件
[root@server2 ~]# grep -v ‘^#’ /etc/salt/minion
master: 192.168.108.129

Master
[root@server1 ~]# salt-key
Accepted Keys:
Denied Keys:
Unaccepted Keys:
server2 #默认是主机2的系统名,可以修改/etc/salt/minion的id字段
Rejected Keys:
把server2加入监控列表
[root@server1 ~]# salt-key -a server2
The following keys are going to be accepted:
Unaccepted Keys:
server2
Proceed? [n/Y] y
Key for minion server2 accepted.
[root@server1 ~]# salt-key
Accepted Keys:
server2
Denied Keys:
Unaccepted Keys:
Rejected Keys:

测试

[root@server1 ~]# salt ‘*’ test.ping<==代表所有主机
server2:
True

* 是指向所有minions的目标。
test.ping 告诉minon运行 test.ping 函数。

[root@server1 ~]# salt ‘*’ cmd.run ‘df -h’<==远程执行命令
server2:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 8.2G 8.4G 50% /
tmpfs 491M 92K 491M 1% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
/dev/sr0 4.2G 4.2G 0 100% /media/CentOS_6.5_Final

错误排查:

通过查看minion:tail -f /var/log/salt/minion
2016-08-28 23:29:25,272 [salt.config ][ERROR ] Error parsing configuration file: /etc/salt/minion - conf should be a document, not .
修改minion配置文件
master: 192.168.1.248
id: 192.168.1.230
master:后面跟空格,然后是mster的ip。id:后面有个空格,千万别忘了,否则启动会报错。

最新centos7系列安装可以参考官网:
https://docs.saltstack.com/en/latest/topics/installation/rhel.html

Comments

2017-03-01