目录node
早期运维人员会根据本身的生产环境来写特定脚本完成大量重复性工做,这些脚本复杂且难以维护。系统管理员面临的问题主要是一、系统配置管理,二、远程执行命令,所以诞生了不少开源软件,系统维护方面有fabric、puppet、chef、ansible、saltstack等,这些软件擅长维护系统状态或方便的对大量主机进行批量的命令执行。python
salt灵活性强大,能够进行大规模部署,也能进行小规模的系统部署。salt的设计架构适用于任意数量的服务器,从少许本地网络系统到跨越数个数据中心,拓扑架构都是c/s模型,配置简单。linux
无论是几台、几百台、几千台服务器,均可以使用salt在一个中心节点上进行管控,灵活定位任意服务器子集来运行命令。 nginx
Salt是python编写的,支持用户经过python自定义功能模块,也提供了大量的python API接口,用户能够根据须要进行简单快速的扩展json
salt安装服务器环境vim
准备两台机器 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'])