SaltStack

自动化运维工具的对比:

 saltstack介绍:

  • SaltStack管理工具允许管理员对多个操作系统创建一个一致的管理系统
  • SaltStack最主要的两个功能是:配置管理与远程执行
  • SaltStack不只是一个配置管理工具,还是一个云计算与数据中心架构编排的利器
  • 采用订阅者模式的分布式管理工具  管理节点【发命令】-->被管理节点【去执行 返回结果】
  • 采用自定义协议zeromq比SSH(一对一)速度更快

SaltStack部署

salt-master安装:
1. yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2el7.noarch.rpm
2. yum install salt-master
3. yum install salt-symdic #可选,分布式代理
4. yum install salt-cloud #可选,基于OpenStack做的,可以支持多种云的使用

salt-minion安装:
1. yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2el7.noarch.rpm
2. yum install salt-minion

如果太慢就在阿里云里下载:https://mirrors.aliyun.com/saltstack/yum/
wget ...
mv saltstack-rhel7.repo /etc/yum.repos.d/
yum clean all
yum -y install salt-master/

SaltStack采用C/S模式,server端就是salt的master,client端就是minion,
minion与master之间通过ZeroMQ消息队列通信
minion上线后先与master端联系,把自己的pub key发过去,这时master端通过salt-key-L命令
就会看到minion的key,接受该minion-key后,也就是master与minion已经互信
master可以发送任何指令让minion执行了,salt有很多可执行模块,比如cmd模块,在安装minion的时候已经自带了。
它们通常位于你的Python库中,locate salt | grep /usr/可以看到salt自带的所有东西
这些模块是Python写成的文件。里面会有很多函数,如cmd.run,当我们执行
salt '*' cmd.run 'uptime'的时候,master下发任务匹配到的minion上去,minion执行模块函数,并返回结果

关于zeroMQ
master监听4505和4506端口
4505对应的是ZMQ的PUB system,用来发送消息;
4506对应的是REP system,用来接收消息;

奴隶去找主人 minion找master
1) 安装包
2) 配置文件
vim /etc/salt/master
---空格分隔
master: 192.168.10.42
user: root

vim /etc/salt/minion
---
master: 192.168.10.42
user: root
id: minion-01 //自己取的名字不重复即可

启动:systemctl start salt-master
启动后多了两个端口4505、4506,一个接收消息,一个发送消息
salt-key -L 查看自己的奴隶
systemctl start salt-minion 启动奴隶
salt-key -L 就可以看到了
-----
Accepted Keys: 同意加入的
Denied Keys: 未被加入的
Unaccepted Keys: 未知的
Rejected keys: 被拒绝的
-----

认领“奴隶”:
salt-key -a minion-01
认领后被加入到Accepted Keys


salt-key命令
salt-key -L 列出来认大哥的
salt-key -A 所有小弟都认
salt-key -a 单个认
salt-key -D 剔除所有小弟
salt-key -d 删除某个

#如何使用salt看手册
查看模块列表module(模块也是Python文件)
salt 'minion-01' sys.list_modules
查看指定module的function用法
salt 'minion-01' sys.list_functions cmd
查看指定模块的详细用法
salt 'minion-01' sys.doc cmd

#在master上查看minion
#查看minion的状态
salt-run manage.status
#查看minion在线状态
salt-run manage.up
#查看minion不在线状态
salt-run manage.down

在master上使用文件分发salt-cp到minion上
#salt-cp分发文件到minion上,不支持目录分发,通常在master运行
#拷贝单个文件
salt-cp minion-01 /root/salt-repo-latest-2.el7.noarch.rpm /tmp
#拷贝单个文件到minion的目标目录下并改名
salt-cp minion-01 /root/anaconda-ks.cfg /tmp/abc

minion本地执行命令:salt-call
例如只想改某个“奴隶端”
#salt-call minion本地执行命令,自己执行可执行模块,不是通过master下发指令
salt-call test.ping

master上批量操作
#执行单个salt命令,模块命令
salt "*" test.ping
*代表所有主机执行test.ping命令
#执行一个Linux命令,系统命令
salt "*" cmd.run "hostname"
cmd.run告诉客户端执行什么linux命令
#执行一个脚本
salt "*" cmd.script 'salt://脚本名'
脚本名必须放在单引号内,/srv/salt脚本默认路径

查看salt minion在执行什么操作
查看所有:salt-run jobs.active
查看某个的jid:salt 'minion-01' saltutil.running
终止minion正在执行的操作:salt 'minion-01' saltutil.kill_job 23423 数字表示jid的值

#清除minion缓存
salt '*' saltutil.clear_cache
3) 调整平台
4) 应用
5) 部署一个环境
*部署业务
*升级业务
*配置文件升级业务
*服务管理

备注
部署一个Nginx环境
原文地址:https://www.cnblogs.com/staff/p/11526154.html