文章目录
一 SaltStack 简介
1. SaltStack 是什么??
- SaltStack 是一个配置管理系统,能够维护预定义状态的远程节点。
- SaltStack 是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据。
- SaltStack 是运维人员提高工作效率、规范业务配置与操作的利器。
2. Salt 的核心功能
- 使命令发送到远程系统是并行的而不是串行的
- 使用安全加密的协议
- 使用最小最快的网络载荷
- 提供简单的编程接口
- Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。
3. SaltStack 通信机制
- SaltStack 采用 C/S模式,minion与master之间通过ZeroMQ消息队列通信,默认监听4505端口。
- Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口
二 SaltStack 安装部署
1. 实验准备
三台主机。一台master,两台minion
主机ip | hostname | 作用 |
---|---|---|
server1(172.25.42.1) | ss1 | master(主节点) |
server2(172.25.42.2) | ss2 | minion(节点1) |
server3(172.25.42.3) | ss3 | minion(节点2) |
- 官网:https://www.saltstack.com/
- 设置官方YUM仓库:
yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm
2. 安装部署
步骤一:在master 上安装salt-repo文件
master
[root@nn1 ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm
[root@nn1 yum.repos.d]# yum list salt-master #要求高于3000.2,bug修复了
salt-master.noarch 3000.3-1.el7 salt-latest
[root@nn1 yum.repos.d]# yum install -y salt-master
步骤二:官方镜像下载过慢,换为阿里云镜像
步骤三:此时发现salt-master版本过低,有漏洞,因此换为原本官方镜像
步骤四:配置服务端,客户端
在ss1上安装salt-master
在ss2和ss3中都安装 salt-minion
步骤五:设置开机自启动
步骤六:查看端口,发现两个备用端口
在 /etc/salt/master 配置文件中设置端口
步骤七:此时查看进程
发现自动开启了过多进程,但无任何信息
因此需要安装该软件,可以查看更多的进程信息
步骤九:在minion端加master的IP
vim /etc/salt/minion #minion配置文件
master的IP加入后,重启minion端
步骤十:连接
master端和minion端配置好后,查看master端的4505和4506端口,发现4506接收到了来自ss2的连接请求
接收到连接请求后,若允许了,则4505端口收到已经被允许的SS2
salt-key -L 列出连接请求
salt-key -A 允许所有的连接请求
salt-key -a ss2 允许指定主机连接请求
连接后,查询/etc/salt/pki/ 目录下有连接到的SS2主机
在master端可以查看minion端的连接目录已经彼此交换的公钥
此时在已连接的minion端下 /etc/salt/pki/目录下查询目录结构
同时也可以查到交换的密钥
步骤十一:在ss3端加入masterIP,进行配置
允许连接
三 远程连接
1. 远程执行Shell命令
salt 命令由三个主要部分构成:
salt '<target>' <function> [arguments]
salt 内置执行模块列表:
http://docs.saltstack.cn/ref/modules/all/index.html
查看所连接的minion:ping
* 表全部被允许连接的minion端
* 也可只指定 minion
查看所连接的minion: df -h
-E 表示正则表达式
查看所连接的minion: ping hostname
pkg模块
在 master端 安装、卸载minion(ss2端)的 httpd
ss2 minion端,master端的所有指令都存放该目录下
cat /var/cache/salt
2. 编写远程执行模块
创建远程配置文件的目录
在默认远程配置目录下,创建模块目录
编写模块文件,并同步模块
执行后,master端的操作都缓存在该目录下
master端也可以直接调用
3. YAML语言
规则
缩进:Salt需要每个缩进级别由两个空格组成,不要使用Tabs
冒号:字典的keys在YAML中的表现形式是一个以冒号结尾的字符串
短横杠:想要表示列表项,使用一个短横杠加一个空格。
4. 配置管理
Salt 状态系统的核心:SLS
sls文件命名:
1.以 .sls 作为后缀,但调用时不需要加后缀
2.使用子目录来做组织是一个很好的选择
3.int.sls 在一个子目录里面表示引导文件,也就表示子目录本身 'apache/init.sls'=='apache'
4.如果同时存在apache.sls 和 apache/init.sls,则apache/init.sls被忽略,apache.sls被用来表示apache
创建sls文件,并指定minion端执行
安装httpd文件
安装多个软件包
批量执行,TOP文件
# vim /srv/salt/top.sls
base:
'*':
- apache
批量执行
# salt '*' state.highstate