Saltstack 安装 命令
主机规划
10.0.0.21 master
10.0.0.22 minion
10.0.0.23 minion
基础环境
[root@10.0.0.21 ~]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) [root@10.0.0.21 ~]# uname -r 3.10.0-957.el7.x86_64 [root@10.0.0.21 ~]# uname -m x86_64
关闭防火墙和SElinux
[root@10.0.0.21 ~]# systemctl stop firewalld
[root@10.0.0.21 ~]# vim /etc/selinux/config SELINUX=disabled
[root@10.0.0.21 ~]# getenforce Disabled
配置机器的hosts文件,用于加速域名解析,加入以下信息,每台机器都要配置
[root@10.0.0.21 opt]# cat /etc/hosts 10.0.0.21 10.0.0.21 10.0.0.22 10.0.0.22 10.0.0.23 10.0.0.23
更改主机名
[root@10.0.0.21 opt]# hostnamectl set-hostname master [root@10.0.0.22 opt]# hostnamectl set-hostname minion [root@10.0.0.23 opt]# hostnamectl set-hostname minion
安装
配置epel源
[root@10.0.0.21 opt ]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@ 10.0.0.21 opt ]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #清空缓存 [root@ 10.0.0.21 opt ]# yum clean all #生成yum缓存 [root@ 10.0.0.21 opt ]# yum makecache
开始安装salt了
安装master(10.0.0.21) [root@10.0.0.21 opt]# yum install salt-master -y 安装minion(10.0.0.22,10.0.0.23) [root@10.0.0.22 opt]# yum install salt-minion -y
salt端口
安装好salt之后开始配置,salt-master默认监听两个端口:
4505 publish_port 提供远程命令发送功能 4506 ret_port 提供认证,文件服务,结果收集等功能 确保客户端可以通信服务器的此2个端口,保证防火墙允许端口通过。因此在测试环境直接关闭防火墙。
配置文件
salt-master的配置文件是/etc/salt/master salt-minion的配置文件是/etc/salt/minion 配置文件中包含了大量可调整的参数,这些参数控制master和minion各个方
# salt运行的用户,影响到salt的执行权限 user: root #s alt的运行线程,开的线程越多一般处理的速度越快,但一般不要超过CPU的个数 worker_threads: 10 # master的管理端口 publish_port : 4505 # master跟minion的通讯端口,用于文件服务,认证,接受返回结果等 ret_port : 4506 # 如果这个master运行的salt-syndic连接到了一个更高层级的master,那么这个参数需要配置成连接到的这个高层级master的监听端口 syndic_master_port : 4506 # 指定pid文件位置 pidfile: /var/run/salt-master.pid
salt-master文件配置
[root@10.0.0.21 opt]# grep -v ^# /etc/salt/master|grep -v ^$ interface: 0.0.0.0 #绑定到本地的0.0.0.0地址 publish_port: 4505 #管理端口,命令发送 user: root #运行salt进程的用户 worker_threads: 5 #salt运行线程数,线程越多处理速度越快,不要超过cpu个数 ret_port: 4506 #执行结果返回端口 pidfile: /var/run/salt-master.pid #pid文件位置 log_file: /var/log/salt/master #日志文件地址 #自动接收minion的key auto_accept: False
# minion的识别ID,可以是IP,域名,或是可以通过DNS解析的字符串 id: slave # salt运行的用户权限 user: root # master的识别ID,可以是IP,域名,或是可以通过DNS解析的字符串 master : master # master通信端口 master_port: 4506 # 备份模式,minion是本地备份,当进行文件管理时的文件备份模式 backup_mode: minion # 执行salt-call时候的输出方式 output: nested # minion等待master接受认证的时间 acceptance_wait_time: 10 # 失败重连次数,0表示无限次,非零会不断尝试到设置值后停止尝试 acceptance_wait_time_max: 0 # 重新认证延迟时间,可以避免因为master的key改变导致minion需要重新认证的syn风暴 random_reauth_delay: 60 # 日志文件位置 log_file: /var/logs/salt_minion.log
salt-minion文件配置
[root@10.0.0.22 opt]# grep -v ^# /etc/salt/minion|grep -v ^$ master: 10.0.0.21 master_port: 4506 user: root id: 10.0.0.22 acceptance_wait_time: 10 log_file: /var/log/salt/minio
启动salt-master和salt-minion
[root@10.0.0.21 opt]# systemctl start salt-master [root@10.0.0.22 opt]# systemctl start salt-minion
查看salt的状态
[root@10.0.0.21 opt]# systemctl status salt-master [root@10.0.0.22 opt]# systemctl status salt-minion
在master上接收minion秘钥
在salt-master执行
[root@10.0.0.21 opt]# salt-key * Accepted Keys: Denied Keys: Unaccepted Keys: 10.0.0.22 10.0.0.23 Rejected Keys:
指定接受minion的key
[root@10.0.0.21 opt]# salt-key -a 10.0.0.22
检查两条秘钥情况
在主执行 salt-key -f 10.0.0.22 在从执行 salt-call --local key.finger
salt-key
常用命令
[root@10.0.0.21 opt]# 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自动接受请求
日常命令参数
首先知道master和minion都安装了什么文件,然后才知道怎么操作
master端
pm -ql salt-master
/etc/salt/master # salt master主配置文件 /usr/bin/salt #salt master 核心操作命令 /usr/bin/salt-cp #salt 文件传输命令 /usr/bin/salt-key #salt证书管理 /usr/bin/salt-master #salt master 服务命令 /usr/bin/salt-run #salt master runner命令
slave端
[root@slave ~]$rpm -ql salt-minion
/etc/salt/minion #minion配置文件 /usr/bin/salt-call #拉取命令 /usr/bin/salt-minion #minion服务命令 /usr/lib/systemd/system/salt-minion.service #minion启动脚本
第一条salt命令
探测minion主机是否存活
[root@10.0.0.21 opt]# salt '*' test.ping 10.0.0.22: True 10.0.0.23: True # salt 是一个命令 # * 表示目标主机, 在这里代表所有目标主机 # test.ping是salt远程执行的一个模块下面的方法。
获取minion主机名
[root@10.0.0.21 opt]# salt '*' cmd.run 'hostname'
获取minion的IP
[root@10.0.0.21 opt]# salt '*' cmd.run 'ip a'
在minion创建文件
[root@10.0.0.21 opt]# salt '*' cmd.run 'touch /tmp/text.txt '
返回值的格式替换
[root@10 opt]# salt --out=json "*" cmd.run "hostname"
返回yaml的语法格式
[root@10 opt]# salt --out=yaml "*" cmd.run "hostname"
为所有的机器安装nginx
安装 [root@10.0.0.21 opt]# salt "*" pkg.install 'nginx' 卸载 [root@10.0.0.21 opt]# salt "*" pkg.remove 'nginx' 查看pkg包的版本
[root@10.0.0.21 opt]# salt "*" pkg.version 'nginx'
远程管理
启动 [root@10.0.0.21 opt]# salt "*" service.start 'nginx' 关闭 [root@10.0.0.21 opt]# salt "*" service.stop 'nginx' 查看状态 [root@10.0.0.21 opt]# salt "*" service.status 'nginx'