|
写在前面:
更该主机名,方便识别。更为了其他的方便。本次采用两台服务器测试。master端也同样可以安装minion作为客户端被管理。如果后续有需求,可以多增加几台服务器,或者虚拟机做测试。千万别用线上服务器。万一出问题就麻烦了。业务就挂了
Saltstack(中国用户组www.saltstack.cn)
基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。
三种工作方式: 本地, c/s, 基于ssh(不用安装agent)
三大功能: 远程命令执行,配置管理(服务,文件,cron,用户,组),云管理
支持系统:大多数都支持,windows上不支持安装master
参考博客:http://daixuan.blog.51cto.com/5426657/1899160
实验主机:
centos6.7-4: 192.168.1.110作为master端
centos6.7-3: 192.168.1.107 作为minion端
主机名最好更改一下:
master端:
vim /etc/sysconfig/network
HOSTNAME=master
vim /etc/hosts
192.168.1.110 master
minion端:
vim /etc/sysconfig/network
HOSTNAME=minion
vim /etc/hosts
192.168.1.107 minion
1.2.2 yum方式安装(采用epel源)
两台机器最好更改一下/etc/hosts地址 保证可以ping通
master端安装:
rpm -ivh https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum -y install salt-master//安装salt-master
service salt-master start//启动salt-master
ss -antlup | egrep "4505|4506"//查看端口 或者
ps -ef | grep salt-master
vim /etc/salt/master
auto_accept: True//可选,key通过‘salt-key -a keyname’命令手动进行认证
minon端安装:
rpm -ivh https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum -y install salt-minion//安装salt-minion
更改minion配置文件:
vim /etc/salt/minion
或者sed命令更改:
sed -i 's/#master: salt/master: 192.168.1.110/g' /etc/salt/minion//增加master主机的配置,把ip指向master的ip。如果配置成主机名的话,需要在/etc/hosts文件中master主机对应的IP ,如果使用内部DNS的例外,可以在内部DNS上的统一配置。
注意:192.168.1.110就是master服务器端的ip地址,master: 的后面有一个空格,空格后面才是ip地址,如果没有空格会提示出错 后面配置minion的ip也是一样有一个空格
没有空格出现错误,错误如下:
Starting salt-minion daemon: [ERROR ] Error parsing configuration file: /etc/salt/minion - while scanning a simple key
in "<string>", line 44, column 1:
id:host172
^
could not found expected ':'
in "<string>", line 46, column 1:
# Append a domain to a hostname ...
^
找到#id 改成
id: minion_192.168.1.102 //id后面这个名字可以自己取,最好别太复杂。这个ip是minion端的ip地址,为了方便,我就用minion加上minion端的ip来命名了
还可以改成minion然后用ip的最后一段,如 minion102这样
或者用sed更改 如下:
sed -i 's/#id:/id: minon_192.168.1.102/g' /etc/salt/minion
service salt-minion start//启动salt-minion
ss -antlu | egrep "4505|4506"//查看salt-minion端口
ps -ef | grep salt-minion
注意:ID如果不指定的话,salt通过socket.getfqdn()来获取主机的名称来作为标识,指定给ID,作为minion与master交互的身份标识
更改完salt-minion配置文件以后,一定要重启salt-minion,否则 在master端进行salt-key -A进行认证key的时候不能认证通过,会发现没有认证的key
netstat -antlp | grep 4505 确保消息发布端口正常
netstat -antlp | grep 4506 确保客户端与服务端通信端口正常
salt-master -l debug debug模式,查看salt都进行哪些操作
2. key认证
server上执行:
salt-key -a minion #这里minion就是minion配置文件设置的id,-a指定具体的某一台minion客户端服务器
认证完后,此时我们在minion端的 /etc/salt/pki/minion 目录下面会多出一个minion_master.pub 文件
可以使用 salt-key 命令查看到已经签名的客户端
salt-key 可以使用-A签名所有主机,也可以使用-d删除指定主机的key
salt-key的使用实例:
更多证书管理方法 使用:salt-key --help 查看 下面会有列出
# 显示所有minion的认证信息
salt-key -L
# 接受192.168.0.100的认证信息 -a指定具体key
salt-key -a 192.168.0.100
# 接受192.168.0.100的认证信息,不需要手动验证
salt-key -a 192.168.0.100 -y
# 接受192.168.0.100的认证信息,即使该minion是Rejected Keys状态
salt-key -a 192.168.0.100 --include-all
# 接受所有 Unaccepted Keys 状态的minion的认证信息
salt-key -A 或者 salt-key -A -y
# 拒绝认证192.168.0.100
salt-key -d 192.168.0.100
# 拒绝所有 Unaccepted Keys 状态的minion
salt-key -D #这样就删除了所有认证,最好不要做。但是删除了所有的认证以后,如果在此执行salt-key -A -L 会看到没有任何一个认证的key。 需要重启所有服务器上的minion,否则就会一直没有key被认证。
可以 salt-key * 一下 # *号 代表所有
*************查看哪些服务器的minion挂了****************
salt-run manage.status
3. 远程执行
示例1: salt '*' test.ping 这里的*表示所以已经签名的客户端,也可以指定其中一个
示例2: salt '*' cmd.run 'df -h'
说明1: 这里的*必须是在master上已经被接受过的客户端,可以通过salt-key查到,通常是我们已经设定的id值。关于这部分内容,它支持通配、列表以及正则。 比如两台客户端 web10 web11, 那我们可以写成 salt 'web*' salt 'web1[02]' salt -L 'web10,web11' salt -E 'web(10|11) 等形式,使用列表,即多个机器用逗号分隔,而且需要加-L,使用正则必须要带-E选项。 它还支持grains,加-G选项,后面会介绍到。
其他安装方式:
1.2.3 pip方式安装
master端安装:
pip install salt
mkdir /etc/salt/;wget -O /etc/salt/master https://github.com/saltstack/salt/blob/develop/conf/master
salt-master -d
minion端安装:
pip install salt
mkdir /etc/salt/;wget -SO /etc/salt/minion https://github.com/saltstack/salt/blob/develop/conf/minion
sed -i ‘s/#master: salt/master: IPADDRESS/g’/etc/salt/minion
#IPADDRESS是master服务器的ip地址
salt-minion -d
1.2.4源码安装
master端安装:
git clone https://github.com/saltstack/salt.git
pip install -r salt/requirements/zeromq.txt
mkdir /etc/salt/; cp salt/conf/master /etc/salt
salt-master -d
minion端安装:
git clone https://github.com/saltstack/salt.git
pip install -r salt/requirements/zeromq.txt
python salt/setup.py install
mkdir /etc/salt/; cp salt/minion /etc/salt/
sed -i ‘s/#master: salt/master: IPADDRESS/g’ /etc/salt/minion
注意:IPADDRESS为master的ip地址
由于saltstack软件依赖包比较多,我们不建议用源码编译安装每个依赖包的方式全装,所以这里采用pip安装方式去安装依赖包。如果想学编译安装,百度上有很多教程
1.2.5 salt-bootstrap安装
salt-bootstrap是saltstack的一个单独项目,该项目主要用于解决多平台意见不熟saltstack环境。核心工程就是维护一个庞大的bash脚本
master端安装:
curl -L https://bootstrap.saltstack.com -o install_salt.sh
sh install_salt.sh -M -N #只安装最新版master
minion端安装:
echo “IPADDRESS salt” >> /etc/hosts #IPADDRESS为master服务器的地址
curl -L https://bootstrap.saltstack.com -o install_salt.sh
sh install_salt.sh -i minion #只安装最新版minion并且指定minion > 关于salt-bootstrap脚本参数可以运行 sh install_salt.sh -h 查看,改脚本也提供非常方便的一键部署参数
----------部署环境完成,本人用epel方式进行yum安装的--------
1.3.1 证书管理
[root@master ~]# salt-key -L //查看当前证书签证情况
Accepted Keys: 已接收的密钥
Denied Keys: 被决绝的密钥
Unaccepted Keys: 未接受的密钥
Rejected Keys: 被丢弃的密钥
[root@master ~]# salt-key -A –y //同意签证所有没接收的签证请求
提示告诉我们:没有未签证的主机(因为我们只有一台master一台minion,minion接受签证了)
运行第一条saltstack命令,检测master和minion之间通信是否正常
salt '*' test.ping
更多证书管理命令可以通过salt-key -h查看
-l 显示指定状态的key(支持正则表达式)
-L 显示所有public keys
-a 接受制定等待恩正的key(支持正则表达式)
-A 接受所有等待认证的key
-r 拒绝等待认证的key(支持正则表达式)
-R 拒绝所有等到认证的key,
--include-all 显示所有状态的key(包含non-pending状态)
-p(小写的) 打印指定的public key(支持正则表达式)
-P(大写的) 打印所有的public key
-d 删除指定的key
-D 删除所有key
-f 显示指定的key指纹信息(支持正则表达式)
-F 现实所有key指纹信息
第一条测试命令:
salt 'minion_192.168.1.107' test.ping
1.3.2 日常命令参数
查看安装的时候分别安装了那些命令(yum安装方式)
[root@master ~]# rpm -ql salt-master
/etc/rc.d/init.d/salt-master //salt-master服务启动脚本
/etc/salt/master //salt master配置文件
/usr/bin/salt //salt master核心操作命令
/usr/bin/salt-cp //salt 文件传输命令
/usr/bin/salt-key //salt 证书管理命令
/usr/bin/salt-master //salt master服务命令
/usr/bin/salt-run //salt master runner命令
/usr/bin/salt-unity
……… |
|
|