img
saltstack介绍
关于Saltstack的介绍,简单一句话:整合了Puppet和 Chef的功能,更加强大,更适合大规模批量管理服务器。
- 开发语言: python
- 工作方式: master/minion(zeroMQ) ,masterless , salt-ssh(0.17+)
- 三大方式:
remote exection: 远程执行
config mamagement: 配置管理
cloud mangement(?): 云端的管理
基本概念
Saltstack基于C/S架构,服务端master和客户端minions
- 部署简单、方便;
- 支持大部分UNIX/Linux及Windows环境;
- 主从集中化管理;
- 配置简单、功能强大、扩展性强;
- 主控端(master)和被控端(minion)基于证书认证,安全可靠;
- 支持API及自定义模块,可通过Python轻松扩展
Master : 控制中心,salt命令运行和资源状态管理
Minions : 需要管理的客户端机器,会主动去连接Mater端,并从Master端得到资源状态
信息,同步资源管理信息
States: 配置管理的指令集
Modules: 在命令行中和配置文件中使用的指令模块,可以在命令行中运行
Grains: minion端的变量,静态的
Pillar:minion端的变量,动态的比较私密的变量,可以通过配置文件实现同步minions定义
highstate: 为minion端下发永久添加状态,从sls配置文件读取.即同步状态配置
salt_schedule: 会自动保持客户端配置
Master与Minion认证
- minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。
- master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。
master与minion之间的通信
- SaltStack master启动后默认监听4505和4506两个端口。
- 4505(publish_port)为saltstack的消息发布系统
- 4506(ret_port)为saltstack客户端与服务端通信的端口,负责接收客户端发送过来的结果
- img
安装+配置
配置域名hosts文件,也可以使用ip地址
cat /etc/hosts
10.10.10.14 test14.salt.cn
10.10.10.15 master15.salt.cn
环境系统
master: 10.10.10.15
minion: 10.10.10.14
yum安装
master端:
yum install salt-master
配置文件地址: /etc/salt/master
_启动的端口: _
- 4505(publisth_port) : 用于salt的消息发布系统
- 4506(retrun_port): salt客户端与服务器端通信的端口,接受客户端返回结果
** 启动服务: **
/etc/init.d/salt-master
minion端:
yum install salt-minion
配置文件地址: /etc/salt/minion
master: 10.10.10.15 #服务器端的主机名
id: test14.salt..cn #客户端的主机名 ,唯一标识
*注意: 配置文件要格式统一 *
启动服务:
/etc/init.d/salt-minion start
通信认证
salt 的master和minion 之间是通过证书通信的. 所以存在证书的信任颁发问题
** master端**
salt-key -L : 查看当前需要接受的keys
salt-key-a hostname : 接受来自一个主机的证书
salt-key-A :接受所有请求的证书
/etc/salt/master 配置文件 : 自动接受请求证书
auto_accept: true
[root@bj-idc-15 master]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
test14.salt.cn #未被认证的主机
Rejected Keys:
[root@bj-idc-15 master]# salt-key -a test14.salt.cn
The following keys are going to be accepted:
Unaccepted Keys:
test14.salt.cn
Proceed? [n/Y] y
Key for minion test14.salt.cn accepted. #请求认证已经被接受
测试通信
[root@bj-idc-15 master]# salt "test14.salt.cn" test.ping
test14.salt.cn:
True
返回True代表成功了
[root@bj-idc-15 master]# mkdir -p /srv/salt ; cd /srv/salt
[root@bj-idc-15 salt]# mkdir /srv/salt/dev
[root@bj-idc-15 salt]# cat top.sls
base:
'*':
- dev.http
[root@bj-idc-15 salt]# cat dev/http.sls
http:
pkg:
- name: httpd
- installed
service:
- name: httpd
- running
- reload: True
- watch:
- file: /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf:
file.managede:
- source: salt://files/httpd.conf
- user: root
- group: root
- mode: 644
- backup: minion
执行命令
sls文件写好以后,在master执行命令
[root@bj-idc-15 ~]# salt “test14.salt.cn” state.highstate
检查执行结果
[root@bj-idc-14 ~]# rpm -qa httpd
httpd-2.2.15-47.el6.centos.1.x86_64
[root@bj-idc-14 ~]# ss -tunlp | grep 1000
tcp LISTEN 0 128 :::1000 :::* users:(("httpd",29395,4),("httpd",29397,4),("httpd",29398,4),("httpd",29399,4),("httpd",29400
网友评论