Skip to content

自动化运维之:SaltStack基础篇

Saltstack

Centos 6/RHEL 6安装:

#添加EPEL源
rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm
#安装稳定版
yum install salt-master

防火墙配置:

-A INPUT -m state --state new -m tcp -p tcp --dport 4505 -j ACCEPT
-A INPUT -m state --state new -m tcp -p tcp --dport 4506 -j ACCEPT

Master白名单:

# Allow Minions from these networks
-I INPUT -s 10.1.2.0/24 -p tcp -m multiport --dports 4505,4506 -j ACCEPT
-I INPUT -s 10.1.3.0/24 -p tcp -m multiport --dports 4505,4506 -j ACCEPT
# Allow Salt to communicate with Master on the loopback interface
-A INPUT -i lo -p tcp -m multiport --dports 4505,4506 -j ACCEPT
# Reject everything else
-A INPUT -p tcp -m multiport --dports 4505,4506 -j REJECT

Salt-Master配置:
默认Salt master监听所有网卡接口(0.0.0.0)的4505、4506端口。
如果需要指定监听IP,通过/etc/salt/master配置文件中的“interface”指令进行如下修改:

- #interface: 0.0.0.0
+ interface: 10.0.0.1

service salt-master start
chkconfig salt-master on

如不修改监听端口,默认的Master配置就可以工作在大多数情况下;
更多配置说明:http://docs.saltstack.cn/zh_CN/latest/ref/configuration/master.html

Salt-Minion配置:
安装:
yum install salt-minion

Minion配置:
尽管Salt Minion有许多配置选项,但配置Minion还是非常简单的. 
默认的配置Minion会尝试连接DNS名为”salt”的master,如果minion解析到的地址正确,就无需再做配置.

如果DNS名为”salt”并不能解析到本地正确的Master地址,需要通过如下方法修改 /etc/salt/minion 配置文件中的”master”指令:

vim /etc/salt/minion
- #master: salt
+ master: 10.0.0.1    //建议实际生产环境中使用FQDN的方式;

id: MachineName  //建议为客户端配置上ID,方便在Master端辩明客户端;

service salt-minion start
chkconfig salt-minion on

KEY管理:
Salt在Master和Minion之间的通讯采用AES加密. 这就确保了发送给minions的命令不会被篡改, 
Master和Minion之间的通讯认证通过信任的已接受的key进行管理.

客户端启动后,到Master端查看已知的所有KEYS。
salt-key -L
接受minion的KEY后,客户端可以被Master管控;
salt-key -A  //是接受所有已知的KEYS。
salt-key -a keyname  //接受指定的minion KEY,其实就是客户端定义的minion id)。

发送指令:
Master和Minion连通性测试可以通过运行 “test.ping` 命令:
salt keyname test.ping    //测试指定客户端的连通性;
salt ‘*’ test.ping   //测试所有客户端的连通性;

正常情况,每个Minions应该发送一个 True 回应并显示出来.

远程执行教程:
Salt命令由三个主要部分构成:   salt ‘<target>’ <function> [arguments]

target:
允许你指定哪些minion应该运行执行. 默认的规则是使用glob匹配minion id. 例如:
salt ‘*’ test.ping
salt ‘*.example.org’ test.ping

Targets可以使用Grains系统来通过minion的系统信息进行过滤:
salt -G ‘os:Ubuntu’ test.ping

Targets也可以使用正则表达式:
salt -E ‘virtmach[0-9]’ test.ping

Targets也可以指定列表:
salt -L ‘foo,bar,baz,quo’ test.ping

或者在一个命令中混合使用多target类型:
salt -C ‘G@os:Ubuntu and webser* or E@database.*’ test.ping

function:
是module提供的功能. Salt内置了大量有效的functions. 
列出minions上的所有有效functions:
salt ‘*’ sys.doc

例子:
运行一个任意的shell命令:    salt ‘*’ cmd.run ‘uname -a’ 

参数:
function通过空格来界定参数:
salt ‘*’ cmd.exec_code python ‘import sys; print sys.version’
可选的, 也支持keyword参数:
salt ‘*’ pip.install salt timeout=5 upgrade=True

Published inAutomation

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注