运维软件saltstack
早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护。系统管理员面临的问题主要是1、系统配置管理,2、远程执行命令,因此诞生了很多开源软件,系统维护方面有fabric、puppet、chef、ansible、saltstack等,这些软件擅长维护系统状态或方便的对大量主机进行批量的命令执行。
salt灵活性强大,可以进行大规模部署,也能进行小规模的系统部署。salt的设计架构适用于任意数量的服务器,从少量本地网络系统到跨越数个数据中心,拓扑架构都是c/s模型,配置简单。
不管是几台、几百台、几千台服务器,都可以使用salt在一个中心节点上进行管控,灵活定位任意服务器子集来运行命令。
Salt是python编写的,支持用户通过python自定义功能模块,也提供了大量的python API接口,用户可以根据需要进行简单快速的扩展
安装使用流程
-
salt安装服务器环境
准备两台机器 192.168.11.250 master端(主人,主机名) 192.168.11.167 minion端 (奴隶,主机名 )
-
两台机器配置hosts文件,用于加速域名解析,以及分别安装 salt-master 和salt-minion软件
服务端:vim /etc/hosts 192.168.11.167 s17slave 192.168.11.250 s17master 客户端:同样 vim /etc/hosts 192.168.11.167 s17slave 192.168.11.250 s17master
-
分别安装软件
安装master服务端 yum install salt-master -y 安装salve客户端 yum install salt-minion -y
-
主master的配置文件
如下 /etc/salt/master interface: 0.0.0.0 publish_port: 4505 user: root worker_threads: 5ret_port: 4506 pidfile: /var/run/salt-master.pid log_file: /var/log/salt/master
5.从 minion的配置文件
master: s17master
master_port: 4506
user: root
id: s17slave
acceptance_wait_time: 10
log_file: /var/log/salt/minion
6.分别开启 salt-master salt-minion,查看秘钥接收情况
systemctl start salt-master
systemctl start salt-minion
salt-key * #查看所有秘钥情况
salt-key -a 秘钥名 #单独的接收一个秘钥信息
#秘钥接收后,就被管控了
#让s17master这台机器,执行一条命令
salt "s17slave" cmd.run "touch /tmp/大烧饼.txt "
-
检查两条秘钥情况
在主执行 salt-key -f s17slave 在从执行 salt-call --local key.finger salt-key 只有Master接受了Minion Key后,才能进行管理。具体的认证命令为salt-key常用的有如下命令。 [root@linux-node1 ~]# salt-key -L Accepted Keys: #已经接受的key Denied Keys: #拒绝的key Unaccepted Keys:#未加入的key Rejected Keys:#吊销的key
常用参数
-L #查看KEY状态
-A #允许所有
-D #删除所有
-a #认证指定的key
-d #删除指定的key
-r #注销掉指定key(该状态为未被认证)
在master端/etc/salt/master配置
auto_accept: True #如果对Minion信任,可以配置master自动接受请求
检测从机器是否存活
salt "*" test.ping
salt的命令参数格式
salt命令 参数 目标 salt模块的函数 远程执行的参数
返回值的格式替换
salt --out=json "*" cmd.run "hostname"
返回yaml的语法格式
salt --out=yaml "*" cmd.run "hostname"
远程安装nginx
salt "*" pkg.install "nginx"
salt "*" pkg.remove "nginx"
yaml语法学习
{
"s17":{
"男同学":["带劲","虎牙","股价为"],
"女同学":["卜老师","于建才","湿老师"]
}
}
yaml语法转换如下
"s17":
"男同学":
- "带劲"
- "虎牙"
- "股价为"
"女同学":
- "嫖老师"
- "于建才"
- "股价为"
salt数据管理之grains
salt 's17slave' grains.items
salt 's17slave' grains.item ipv4 #单独找出ipv4的信息
远程关机
local.cmd('*','cmd.run',['poweroff'])