| 关键词:salt node root Minion node2 Master 00 usr bin Python |
自动化运维之SaltStack实践一、Slatstack入门 1.1、什么才是自动化运维? 互联网发展到今天,业务变的越来越复杂,用户的需求也变得越来越广泛,为了保证服务器能够安全稳定的工作。就需要有专门的人来进行运维。在互联网服务器方面,Linux由于效率高、应用广等优势,在中高端服务器中一直占据着主导的地位。互联网Linux运维工作。主要任务是保证公司的互联网业务能够24小时为用户提供稳定、高质、安全的服务。工作内容包括应用系统的发布、部署、变更、监控、事件处理、优化以及系统架构设计调优、提供运维报告等。 而自动化运维是在传统运维的基础上产生的。由于服务器的数量一般都很巨大,仅仅通过人工已经无法满足管理上的要求。于是自动化运维开始受到人们的重视。自动化运维能够大大降低运维人员的工作负担。自动化运维是通过编程,使得计算机能够自动发现故障,并能够报警或者按照事先给定的程序解决问题。主要是将运维中大量的重复性工作转换成自动化操作。 与传统的普通运维相比,能够大量减少人力财力,同时能够有效减少甚至消除运维中的延迟状况。实现真正意义上的零延时Linux运维。 1.2、Slatstack简介 Slatstack是基于Python语言开发的一套C/S架构配置管理工具,它底层使用ZeroMQ消息队列pub/sub方式通信,使用SSL证书签发的方式进行的认证管理。 1.2.1、什么是C/S架构? Client/Server架构,即客户端/服务器架构。通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。 1.2.2、了解ZeroMQ 号称世界上最快的消息队列ZeroMQ使得Saltstack能够快速的在成千上万台机器上进行各种操作。而且采用了RSA Key方式确认身份,传输采用的是AES加密,这使用的它的安全性得到了保障。 1.2.3、Slatstack的通信方式 在Slatstack中服务端的名称为:Master,客户端的名称为:Minion。它们都是以守护进程的模式运行。一直监听着配置文件中定义的ret_prot(接受客户端的请求),同时也监听着publish_port发布消息的端口,当客户端运行的时候,它会自动监听配置文件中定义的ret_prot服务端的地址进行链接验证。 1.2.3、了解RSA Key? RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。RSA的算法涉及三个参数,n、e1、e2。其中,n是两个大质数p、q的积, n的二进制表示时所占用的位数,就是所谓的密钥长度。 1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)(q-1)互质 再选择e2,要求(e2e1)mod((p-1)*(q-1))=1。(n及e1),(n及e2)就是密钥对。 总结:Slatstack通过RSA Key算法进行身份验证,传输使用AES进行加密,使Slatstack安全性方面得到了保障。 二、Slatstack部署实践环境: 2.1、SaltStack安装环境准备 测试Matser IP地址:192.168.1.111 主机名:node1 测试Minion IP地址:192.168.1.124 主机名:node2 2.2、SaltStack_master基础环境准备: 2.2.1、更改master主机hosts文件 [root@node1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.111 node1 192.168.1.124 node2 2.2.2、配置阿里yum源 [root@node1 ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2523 100 2523 0 0 19073 0 --:--:-- --:--:-- --:--:-- 19407 2.2.3、下载epel源 [root@node1 ~]# yum install epel-* -y 2.2.4、关闭防火墙及Selinux [root@node1 ~]# systemctl stop firewalld [root@node1 ~]# setenforce 0 2.3、安装Saltstack_master操作: 2.3.1、安装salt-master && salt-minion [root@node1 ~]# yum install salt-master salt-minion -y ![]() 2.3.1、启动salt-master [root@node1 ~]# systemctl start salt-master [root@node1 ~]# ps -ef | grep salt- root 11555 1 14 06:25 ? 00:00:01 /usr/bin/python /usr/bin/salt-master root 11564 11555 13 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master root 11565 11555 0 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master root 11566 11555 0 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master root 11567 11555 0 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master root 11572 11567 19 06:25 ? 00:00:01 /usr/bin/python /usr/bin/salt-master root 11573 11567 13 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master root 11574 11567 18 06:25 ? 00:00:01 /usr/bin/python /usr/bin/salt-master root 11581 11567 13 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master root 11582 11567 16 06:25 ? 00:00:01 /usr/bin/python /usr/bin/salt-master root 11583 11567 0 06:25 ? 00:00:00 /usr/bin/python /usr/bin/salt-master 2.3.2、启动salt-minion 在启动salt-minion时需要修改配置文件指定master地址后,才可以启动如下: [root@node1 ~]# vi /etc/salt/minion [root@node1 ~]# systemctl start salt-minion [root@node1 ~]# ps -ef | grep salt-minion root 12078 1 4 09:45 ? 00:00:00 /usr/bin/python /usr/bin/salt-minion root 12081 12078 19 09:45 ? 00:00:01 /usr/bin/python /usr/bin/salt-minion root 12111 2648 0 09:45 pts/0 00:00:00 grep --color=auto salt-minion 2.4、客户端操作:[root@node2 ~]# yum install -y salt-minion ![]() 2.4.1、修改salt-minion主配置文件 [root@node2 ~]# vi /etc/salt/minion 2.4.2、启动Salt-minion [root@node2 ~]# systemctl start salt-minion [root@node2 ~]# ps -ef | grep salt-minion root 11741 1 4 10:52 ? 00:00:00 /usr/bin/python /usr/bin/salt-minion root 11744 11741 23 10:52 ? 00:00:01 /usr/bin/python /usr/bin/salt-minion root 11774 2702 0 10:52 pts/0 00:00:00 grep --color=auto salt-minion 在Slatstack中服务端的名称为:Master,客户端的名称为:Minion。它们都是以守护进程的模式运行。一直监听着配置文件中定义的ret_prot(接受客户端的请求),同时也监听着publish_port发布消息的端口,当客户端运行的时候,它会自动监听配置文件中定义的ret_prot服务端的地址进行链接验证。 2.5、Salt秘钥认证设置2.5.1、查看salt-master 目录结构: [root@node1 salt]# tree . ├── master ├── minion ├── minion.d ├── minion_id └── pki ├── master │ ├── master.pem │ ├── master.pub │ ├── minions │ ├── minions_autosign │ ├── minions_denied │ ├── minions_pre │ │ ├── node1 │ │ └── node2 │ └── minions_rejected └── minion ├── minion.pem └── minion.pub 9 directories, 9 files 2.5.2、使用salt-key命令查看key状态 [root@node1 salt]# salt-key Accepted Keys: Denied Keys: Unaccepted Keys: node1 node2 Rejected Keys: ![]() 2.5.3、使用salt-key -a {Linux} 命令将秘钥通过允许,随后node1 and node2 将会移植到minions目录中 [root@node1 salt]# salt-key -a node* The following keys are going to be accepted: Unaccepted Keys: node1 node2 Proceed? [n/Y] y Key for minion node1 accepted. Key for minion node2 accepted. [root@node1 salt]# salt-key Accepted Keys: node1 node2 Denied Keys: Unaccepted Keys: Rejected Keys: [root@node1 salt]# tree . ├── master ├── minion ├── minion.d │ └── _schedule.conf ├── minion_id └── pki ├── master │ ├── master.pem │ ├── master.pub │ ├── minions │ │ ├── node1 │ │ └── node2 │ ├── minions_autosign │ ├── minions_denied │ ├── minions_pre │ └── minions_rejected └── minion ├── minion_master.pub ├── minion.pem └── minion.pub 如图 ![]() 2.6、Salt远程命令2.6.1、test.ping [root@node1 salt]# salt * test.ping node1: True node2: True 2.6.2、salt-run 该命令执行runner 查看所有minion状态 [root@node1 salt]# salt-run manage.status down: up: - node1 - node2 查看所有没在线的minion [root@node1 salt]# salt-run manage.down 查看全部在线的minion [root@node1 salt]# salt-run manage.up - node1 - node2 [root@node1 salt]# 2.6.3、salt-key 密钥管理,通常在master端执行 查看所有minion-key [root@node1 salt]# salt-key -L Accepted Keys: node1 node2 Denied Keys: Unaccepted Keys: Rejected Keys: [root@node1 salt]# 接受某个minion-key [root@node1 salt]# salt-key -a 接受所有minion-key [root@node1 salt]# salt-key -A 删除某个minion-key [root@node1 salt]# salt-key -d 2.6.3、salt-cp 分发文件到minion上,不支持目录分发,通常在master运行 例如:将master主机的text.txt文件分发至node2主机的/opt/下 [root@node1 src]# touch text.txt [root@node1 src]# echo "this is a yankerp" > text.txt [root@node1 src]# salt-cp node2 text.txt /opt/ {node2: {/opt/text.txt: True}} minion查看文件结果 2.7、saltstack 的常用模块可以通过salt ‘*’ sys.list_modules 参看当前版本系统支持的相关模块。 部分截图: ![]() 2.7.1、Archive 模块 功能:实现系统层面的压缩包调用,支持gunzip、gzip、rar、tar、unrar、unzip 例如:利用gzip方法对yankai.txt进行压缩 [root@node1 ~]# salt node2 archive.gzip /opt/yankai.txt node2: node2查看 [root@node2 opt]# ll total 4 -rw-r--r--. 1 root root 31 Jan 9 11:33 yankai.txt.gz 2.7.2、cmd 模块 功能:实现远程的命令行调用执行(默认具备root操作权限) 例如:查看所有salt-minion内存及磁盘挂载情况 [root@node1 ~]# salt * cmd.run free -m node2: total used free shared buff/cache available Mem: 1824 177 1042 8 604 1452 Swap: 2047 0 2047 node1: total used free shared buff/cache available Mem: 1824 313 958 8 552 1329 Swap: 1023 0 1023 [root@node1 ~]# salt * cmd.run df -h node2: Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 50G 5.7G 45G 12% / devtmpfs 903M 0 903M 0% /dev tmpfs 913M 12K 913M 1% /dev/shm tmpfs 913M 8.6M 904M 1% /run tmpfs 913M 0 913M 0% /sys/fs/cgroup /dev/mapper/centos-home 48G 33M 48G 1% /home /dev/sda1 497M 124M 373M 25% /boot tmpfs 183M 0 183M 0% /run/user/0 node1: Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 99G 1.1G 98G 2% / devtmpfs 903M 0 903M 0% /dev tmpfs 913M 16K 913M 1% /dev/shm tmpfs 913M 8.5M 904M 1% /run tmpfs 913M 0 913M 0% /sys/fs/cgroup /dev/sda1 497M 124M 373M 25% /boot tmpfs 183M 0 183M 0% /run/user/0 2.7.3、netwrok 模块 功能:返回被控主机网络信息 例如:获取node2主机的网卡信息 [root@node1 ~]# salt node2 network.interfaces node2: ---------- eno16777728: ---------- hwaddr: 00:0c:29:5a:5b:a7 inet: |_ ---------- address: 192.168.1.124 broadcast: 192.168.1.255 label: eno16777728 netmask: 255.255.255.0 inet6: |_ ---------- address: fe80::20c:29ff:fe5a:5ba7 prefixlen: 64 scope: link up: True lo: ---------- hwaddr: 00:00:00:00:00:00 inet: |_ ---------- address: 127.0.0.1 broadcast: None label: lo netmask: 255.0.0.0 inet6: |_ ---------- address: ::1 prefixlen: 128 scope: host up: True [root@node1 ~]# 获取minion主机的IP地址配置信息 [root@node1 ~]# salt node2 network.ip_addrs node2: - 192.168.1.124 2.7.4、Pkg包管理模块功能:被控主机程序包管理,如yum、apt-get等 node2被控主机安装vim [root@node1 ~]# salt node2 pkg.install vim node2: ---------- gpm-libs: ---------- new: 1.20.7-5.el7 old: vim-common: ---------- new: 2:7.4.160-5.el7 old: vim-enhanced: ---------- new: 2:7.4.160-5.el7 old: vim-filesystem: ---------- new: 2:7.4.160-5.el7 old: [root@node1 ~]# 2.7.5、Service服务模块 功能:被控主机程序包服务管理 [root@node1 ~]# salt node2 service.stop php-fpm node2: True [root@node1 ~]# salt node2 service.start php-fpm node2: True [root@node1 ~]# salt node2 service.restart php-fpm node2: True [root@node1 ~]# salt node2 service.status php-fpm node2: True [root@node1 ~]# salt node2 service.stop php-fpm node2: True [root@node1 ~]# salt node2 service.status php-fpm node2: False [root@node1 ~]# 希望对您有所帮助,再见~ 看我的文章,若没看懂,是我的问题。 但我坚信,认真看过三遍以上的文章,绝对可以学到东西。我是@延瓒Yankerp 送给正在拼搏的你~ |
| 本文出处: https://www.toutiao.com/a6653014244352590344/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|