SaltStack自动化运维工具部署及入门使用教程
SaltStack是一款基于Python的C/S架构自动化运维工具,用于配置管理和远程执行,可有效帮助运维人员提高工作效率、规范业务配置与操作。
一、SaltStack功能
SaltStack的核心功能包括能够提供简单的编程接口、最小最快的网络载荷、安全加密的协议和更加细致化的领域控制系统来远程执行,使命令发送到远程系统是并行的而不是串行的。
由于SaltStack采用C/S架构,minion与master之间通过ZeroMQ消息队列通信,默认监听4505端口。Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口。
二、SaltStack部署教程
1、SaltStack部署环境
- PC1:192.168.30.11(salt-master)
- PC2:192.168.3.12(salt-minion)
其中“PC1”是主机名,“192.168.30.11”是IP地址,“salt-master”是服务。
2、配置yum源
sudo rpm --import https://repo.saltproject.io/py3/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub curl -fsSL https://repo.saltproject.io/py3/redhat/7/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo
3、安装master与minion
PC1执行: yum install -y salt-master #安装master端 systemctl enable --now salt-master #开机自启并启动master服务 PC2执行: yum install -y salt-minion #安装minion端 systemctl enable --now salt-minion.service #开机自启并启动minion服务
4、连接认证master和minion
接下来是master和minion的连接认证,其中minion会在第一次启用时生成一对密钥,公钥会发给master,master收到公钥后会通过salt-key命令接受,然后master的/etc/salt/pki/master/minions目录将会存放以minion id命名的公钥,随后master即可对minion发送控制指令。

PC1执行: lsof -i:4506 #查看4506端口端口状态如下,有监听但是无建立连接的。 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME salt-mast 101552 root 43u IPv4 162865 0t0 TCP *:4506 (LISTEN) lsof -i:4505 #查看4505端口端口状态如下,有监听但是无建立连接的。 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME salt-mast 101546 root 35u IPv4 154229 0t0 TCP *:4505 (LISTEN) PC2执行: rpm -qc salt-minion #查找minion配置文件位置 vim /etc/salt/minion #打开配置文件修改第16行内容,去掉注释加上自己的master地址然后保存退出 . . master: 192.168.30.11 . . systemctl restart salt-minion.service #重启minion服务使得配置生效 PC1执行: lsof -i:4506 #查看4506端口状态如下,一个服务监听端口,一个master与pc2建立连接的端口。 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME salt-mast 101552 root 43u IPv4 162865 0t0 TCP *:4506 (LISTEN) salt-mast 101552 root 51u IPv4 219147 0t0 TCP pc1:4506->192.168.30.12:57896 (ESTABLISHED) lsof -i:4505 #查看4505端口端口状态如下,minion还在等待master端执行命令允许minion连接。 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME salt-mast 101546 root 35u IPv4 154229 0t0 TCP *:4505 (LISTEN)


PC1执行: 使用salt-key命令加参数,配置master允许minion连接 -L 列出所有公钥信息 -a minion地址 接受指定minion等待认证的key -A 接受所有minion等待认证的key -r minion地址 拒绝指定minion等待认证的key -R 拒绝所有minion等待认证的key -f minion地址 显示指定key的指纹信息 -F 显示所有key的指纹信息 -d minion地址 删除指定minion的key -D 删除所有minion的key -y 自动回答yes #查看有哪些主机等待连接 salt-key -A #允许所有主机连接,具体看下图1操作 lsof -i :4505 #查看客户端是否与master建立连接了,下图2


三、SaltStack入门使用教程
接下来试试运行salt:
执行格式:
salt [options] '<target>' <function> [arguments] #执行格式 target:指定哪些minion,默认的规则是使用glob匹配minion id # salt '*' test.ping targets也可以使用正则表达式 # salt -E 'server[1-3]' test.ping targets也可以指定列表 # salt -L 'server2,server3' test.ping funcation:module提供的功能,Salt内置了大量有效的functions arguments:通过空格来界定参数 # 常用target参数 -E 正则匹配 -L 列表匹配 -S CIDR匹配网段 -G grains匹配 --grain-pcre grains加正则匹配 -N 组匹配 -R 范围匹配 -C 综合匹配(指定多个匹配) -I pillar值匹配 # 常用的options --version 查看saltstack的版本号 --versions-report 查看saltstack以及依赖包的版本号 -h 查看帮助信息 -c CONFIG_DIR 指定配置文件目录(默认为/etc/salt/) -t TIMEOUT 指定超时时间(默认是5s) --async 异步执行 -v verbose模式,详细显示执行过程 --username=USERNAME 指定外部认证用户名 --password=PASSWORD 指定外部认证密码 --log-file=LOG_FILE 指定日志记录文件
实操演示:
1、连通性测试 salt '*' test.ping #测试所有minion与master的连通性 salt 'pc2' test.ping ##测试pc2主机minion与master的连通性 2、安装软件 salt 'node1' pkg.install httpd 3、卸载软件 salt 'node1' pkg.remove httpd 4、测试各种模块 salt '*' test.echo 'hello' salt '*' network.ping baidu.com # 使用ping命令测试到某主机的连通性 salt '*' network.connect baidu.com 80 # #测试minion至某一台服务器的网络是否连通 salt '*' network.get_hostname # 获取主机名 salt '*' network.active_tcp # 返回所有活动的tcp连接 salt '*' network.ip_addrs # 返回一个IPv4的地址列表 alt '*' network.get_fqdn # 查看主机的fqdn(完全限定域名)
相关推荐: