学习一下saltstack 服务器批量管理
saltstack运维工具学习,以及rpc远程过程调用
环境准备 2台服务器 一个是
192.168.16.85 s24master
192.168.16.105 s24minion1
修改2台机器的主机名,用于主机名通信,加速salt的命令执行
hostnamectl set-hostname s24master
hostnamectl set-hostname s24minion
关闭2台机器的iptables防火墙策略,防止端口拒绝
iptables -F #清空防火墙规则
systemctl stop firewalld #关闭防火强服务
systemctl disable firewalld #禁止防火墙开机自启
分别安装2个软件,还是配置好阿里的yum源
yum install salt-master -y
yum install salt-minion -y
2.配置/etc/hosts文件,用于主机名通信
192.168.16.105 s24minion
192.168.16.85 s24master
3.修改salt的master和minion的配置文件
在master机器上修改 /etc/salt/master文件改为如下
[root@s24master ~]# grep -vE "^$|#" /etc/salt/master
interface: 0.0.0.0
publish_port: 4505
user: root
worker_threads: 5
ret_port: 4506
修改minion的配置如下
[root@s24minion yum.repos.d]# grep -vE "^$|#" /etc/salt/minion
master: s24master
master_port: 4506
user: root
id: s24minion1
4.分别启动salt-master和salt-minion
[root@s24master ~]# systemctl start salt-master
[root@s24minion yum.repos.d]# systemctl start salt-minion
5.查看密钥是否被读取到了
在master上输入salt-key -L ,查看是否读取到了minion的信息
6.分别检查2台机器的密钥信息,是否一致
在master机器上输入 salt-key -f s24minion1
在minion机器上输入 salt-call --local key.finger
7.接收minion1的密钥,准备管理他了
[root@s24master ~]# salt-key -a s24minion1
8.使用salt的第一个命令,测试服务器是否存活
salt '*' test.ping
#发送命令接口,ping一下被管理的机器,是否存货,返回true活着,负责挂掉了,或者salt-minion服务器宕机了
salt 是核心管理命令
"*" 目标匹配
test.ping 是test模块下的一个功能函数
9.对于密钥管理的命令如下
salt-key 参数如下
-L #查看KEY状态
-A #允许所有
-D #删除所有
-a #认证指定的key
-d #删除指定的key
-r #注销掉指定key(该状态为未被认证)
salt-key -d 密钥名 #删除密钥
10.学习salt的命令接口
[root@s24master ~]# salt 's24minion1' test.fib 50
[root@s24master ~]# salt '*' cmd.run 'touch /tmp/一给我里giao' --summary #输出salt命令执行结果的详细情况
11.远程安装nginx,以及启动nginx
1026 salt '' cmd.run "systemctl status nginx"
1027 salt 's24minion1' cmd.run "yum install nginx -y"
1028 salt '' cmd.run "systemctl status nginx"
1029 salt '' cmd.run "netstat -tunlp|grep 80"
1030 salt '' cmd.run "yum install net-tools -y"
1031 salt '' cmd.run "netstat -tunlp|grep 80"
1032 salt '' cmd.run "systemctl start nginx"
1033 salt '' cmd.run "netstat -tunlp|grep 80"
1034 salt '' cmd.run "systemctl stop nginx"
12.远程安装redis,以及启动使用redis
13.salt提供的软件安装模块,其实页是在远程调用yum命令而已
[root@master 192.168.11.72 ~]$salt '*' pkg.install "nginx"
卸载minion上的nginx
[root@master 192.168.11.72 ~]$salt '*' pkg.remove "nginx"
检查pkg包的版本
[root@master 192.168.11.72 ~]$salt '*' pkg.version "nginx"
14.salt提供的服务信息模块其实调用的是 systemctl 命令
[root@s24master ~]# salt '' service.start "redis"
s24minion1:
True
[root@s24master ~]# salt '' service.status "redis"
s24minion1:
True
15.输出json格式的数据,以及yaml格式的数据
[root@s24master ~]# salt '' service.status "redis" --out=json
{
"s24minion1": false
}
[root@s24master ~]#
[root@s24master ~]#
[root@s24master ~]# salt '' service.start "redis" --out=json
{
"s24minion1": true
}
16.yaml语法学习
用python的数据结构做对比
{"s24":
{"学生":
{"男同学":["常鑫1号","常鑫2号"],"女同学":["常鑫","常黑"]}
}
}
用yaml表示这个数据结构,在线yaml网站http://www.bejson.com/validators/yaml_editor/
#yaml语法
"s24":
"学生":
"男同学":
- "常鑫1号"
- "常鑫2号"
"女同学":
- "常黑"
- "常白"
17.salt采集服务器静态信息之grains模块,其实就是用python写的一个超大的字典
salt '*' grains.items
[root@s24master ~]# salt '*' grains.item fqdn_ip4 --out=json