SaltStack使用总结

Posted wangzengyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SaltStack使用总结相关的知识,希望对你有一定的参考价值。

SaltStack介绍

系统管理员日常会进行大量的重复性操作,例如安装软件,修改配置文件,创建用户,批量执行命令等等,假设有上百台服务器(或者网络设备)需要重复维护工作,如果一台一台维护效率低下且耗费成本和人力,这时候自动化运维工具SaltStack显示出其优势了,帮助管理维护人员进行批量执行原来的重复工作,不但提高了效率而且节省了成本。

部署规划

真实IP地址 虚拟IP 角色 角色描述 服务器版本
192.168.31.11 192.168.31.10 salt-master 主salt服务器 centos6.10
192.168.31.12 - salt-master 备salt服务器 centos6.10
192.168.31.13 - salt-minion salt客户机 centos6.10

tips:请关闭selinux,并做好iptables规则,基础环境配置过程本案例不体现。

# salt端口
4505   publish_port 提供远程命令发送功能
4506   ret_port     提供认证,文件服务,结果收集等功能
确保客户端可以通信服务器的此2个端口,保证防火墙允许端口通过。因此在测试环境直接关闭防火墙。

SaltStack和keepalive软件安装

主salt服务器

yum -y install epel-release	#安装EPEL环境
yum -y install salt-master	#安装salt控制端
yum -y install keepalived  	#安装keepalive

备salt服务器

yum -y install epel-release	#安装EPEL环境
yum -y install salt-master	#安装salt控制端
yum -y install keepalived  	#安装keepalive

salt客户端

yum -y install epel-release	#安装EPEL环境
yum install salt-minion		#安装salt控制端

SaltStack和keepalive配置

主salt服务器

# saltstack配置

vim /etc/salt/master
interface: 192.168.31.10  #绑定到本地的192.168.31.10地址
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
#keepalive配置

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     wang_zengyi@126.com    #接收告警的邮箱
   }                                     #注意需要单独配置smtp_send邮箱
   notification_email_from 647956023@qq.com  #发送告警的邮箱
   smtp_server 182.254.38.18   #发送邮件的服务器地址
   smtp_connect_timeout 30
   router_id study01
}

vrrp_script check_salt {
    script "/usr/bin/killall -0 salt-master"   
    interval 2
}

vrrp_instance VI_1 {
    state BACKUP         #状态为主,默认抢占
    interface eth0         #监听的服务接口
    virtual_router_id 51   #主备必须一致,VRRPID
    priority 80          #优先级,越大越优先
    advert_int 1       #心跳报文通告间隔
    authentication {
        auth_type PASS    #keepalive认证类型
        auth_pass 1111    #keepalive认证密码
    }
    notify_master "/etc/keepalived/master.sh"   #主状态通告脚本
    notify_backup "/etc/keepalived/backup.sh"   #备状态通告脚本
    notify_fault "/etc/keepalived/fault.sh"          #故障状态通过脚本

    track_script {
    check_salt                 #track salt的检测脚本
    }

    virtual_ipaddress {
        192.168.31.10/24 dev eth0  table eth0:0  #虚拟IP
    }
}    

备salt服务器

vim /etc/salt/master
interface: 192.168.31.10  #绑定到本地的192.168.31.10地址
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
#keepalive配置

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     wang_zengyi@126.com    #接收告警的邮箱
   }                                     #注意需要单独配置smtp_send邮箱
   notification_email_from 647956023@qq.com  #发送告警的邮箱
   smtp_server 182.254.38.18   #发送邮件的服务器地址
   smtp_connect_timeout 30
   router_id study02
}

vrrp_script check_salt {
    script "/usr/bin/killall -0 salt-master"   
    interval 2
}

vrrp_instance VI_1 {
    state MASTER         #状态为主,默认抢占
    interface eth0         #监听的服务接口
    virtual_router_id 51   #主备必须一致,VRRPID
    priority 100          #优先级,越大越优先
    advert_int 1       #心跳报文通告间隔
    authentication {
        auth_type PASS    #keepalive认证类型
        auth_pass 1111    #keepalive认证密码
    }
    notify_master "/etc/keepalived/master.sh"   #主状态通告脚本
    notify_backup "/etc/keepalived/backup.sh"   #备状态通告脚本
    notify_fault "/etc/keepalived/fault.sh"          #故障状态通过脚本

    track_script {
    check_salt                 #track salt的检测脚本
    }

    virtual_ipaddress {
        192.168.31.10/24 dev eth0  table eth0:0  #虚拟IP
    }
}    

salt客户端

vim /etc/salt/minion
master: 192.168.31.10
master_port: 4506
user: root
id: 192.168.31.13
acceptance_wait_time: 10
log_file: /var/log/salt/minion

启动salt和keepalive服务

主salt服务器

/etc/init.d/keepalived restart
chkconfig --level 35 keepalived on
/etc/init.d/salt-master restart
chkconfig --level 35 salt-master on

备salt服务器

/etc/init.d/keepalived restart
chkconfig --level 35 keepalived on
/etc/init.d/salt-master restart
chkconfig --level 35 salt-master on

salt客户端

etc/init.d/salt-minion restart
chkconfig --level 35 salt-minion on

在master上接收minion秘钥

[root@master ~]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
192.168.31.13   #此时已经出现客户端的key列表
Rejected Keys:
[root@master ~]# salt-key -a 192.168.31.13
The following keys are going to be accepted:
Unaccepted Keys:
slave
Proceed? [n/Y] y
Key for minion slave accepted.
[root@master ~]# salt-key -L
Accepted Keys:
192.168.31.13   #此时已经出现在接受的key
Denied Keys:
Unaccepted Keys:
Rejected Keys:

tips:将keepalive切换到备机执行同样操作,完成测试环境搭建。

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自动接受请求

日常使用命令

# 服务端
/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命令

# 客户端
/etc/salt/minion     #minion配置文件
/usr/bin/salt-call    #拉取命令
/usr/bin/salt-minion   #minion服务命令
/usr/lib/systemd/system/salt-minion.service   #minion启动脚本

更新中……

以上是关于SaltStack使用总结的主要内容,如果未能解决你的问题,请参考以下文章

saltstack-gdlwolf自学总结第三篇: salt常用指令

python常用代码片段总结

saltstack-gdlwolf自学总结第二篇:salt常用帮助查找命令

BootStrap有用代码片段(持续总结)

BootStrap实用代码片段(持续总结)

saltstack-gdlwolf自学总结第五篇(方法案例): pkg模块初始化安装系统常用软件包