常用的自动化管理工具&&saltstack介绍、安装、使用

常用的自动化管理工具

作为一个运维人员,很大一部分工作是在业务的配置管理和状态维护以及版本发布上,而当业务场景及公司规模上了一定规模后,人为手工的去做这些工作将变得极其困难,此时我们将需要利用一些自动化运维的工具来达到批量管理的目的。

常用的自动化运维工具有:
puppet
ansible
saltstack


此三款属同类工具,皆可用来提高运维管理的效率,但它们又各有优势,目前主流的自动化运维工具是ansible和saltstack。其中ansible无需安装客户端,这是其最大的优势,而saltstack则需要安装客户端工具,类似zabbix的agent。应用场景方面,ansible常用于小型企业,而saltstack则常用于中大型企业,因为ansible无法并行执行而saltstack可以并行。但不论其特点如何,本质上均属同类,所以只需要掌握一种即可轻松胜任运维工作。

saltstack介绍

saltstack服务架构

在saltstack架构中服务器端叫Master,客户端叫Minion。

在Master和Minion端都是以守护进程的模式运行,一直监听配置文件里面定义的ret_port(接受minion请求)和publish_port(发布消息)的端口。

当Minion运行时会自动连接到配置文件里面定义的Master地址ret_port端口进行连接认证。

saltstack除了传统的C/S架构外,其实还有一种叫做masterless的架构,其不需要单独安装一台 master
服务器,只需要在每台机器上安装 Minion端,然后采用本机只负责对本机的配置管理机制服务的模式。

SaltStack四大功能与四大运行方式

SaltStack有四大功能,分别是:

  • 远程执行
  • 配置管理/状态管理
  • 云管理(cloud)
  • 事件驱动

SaltStack可以通过远程执行实现批量管理,并且通过描述状态来达到实现某些功能的目的。

SaltStack四大运行方式:

  • local本地运行
  • Master/Minion传统方式
  • Syndic分布式
  • Salt ssh

SaltStack组件介绍

组件 功能
Salt Master 用于将命令和配置发送到在受管系统上运行的Salt minion
Salt Minions 从Salt master接收命令和配置
Execution Modules 从命令行针对一个或多个受管系统执行的临时命令。对…有用: 1. 实时监控,状态和库存 2. 一次性命令和脚本 3. 部署关键更新
Formulas (States) 系统配置的声明性或命令式表示
Grains Grains是有关底层受管系统的静态信息,包括操作系统,内存和许多其他系统属性。
Pillar 用户定义的变量。这些安全变量被定义并存储在Salt Master中,然后使用目标“分配”给一个或多个Minion。 Pillar数据存储诸如端口,文件路径,配置参数和密码之类的值。
Top File 将Formulas (States)和Salt Pillar数据与Salt minions匹配。
Runners 在Salt master上执行的模块,用于执行支持任务。Salt runners报告作业状态,连接状态,从外部API读取数据,查询连接的Salt minions等。
Returners 将Salt minions返回的数据发送到另一个系统,例如数据库。Salt Returners可以在Salt minion或Salt master上运行。
Reactor 在SaltStack环境中发生事件时触发反应。
Salt Cloud / Salt Virt 在云提供商/虚拟机管理程序上提供系统,并立即将其置于管理之下。
Salt SSH 在没有Salt minion的系统上通过SSH运行Salt命令。

saltstack安装

配置环境

角色 ip地址 需要安装的应用
控制端(master) 192.168.10.20 salt-master
salt-minion
被控端(P1) 192.168.10.30 salt-minion

在控制端安装、配置saltstack

#导入key,配置salt仓库
[root@master ~]# rpm --import https://repo.saltproject.io/py3/redhat/8/x86_64/latest/SALTSTACK-GPG-KEY.pub
[root@master ~]# curl -fsSL https://repo.saltproject.io/py3/redhat/8/x86_64/latest.repo | tee /etc/yum.repos.d/salt.repo
[salt-latest-repo]
name=Salt repo for RHEL/CentOS 8 PY3
baseurl=https://repo.saltproject.io/py3/redhat/8/x86_64/latest
skip_if_unavailable=True
failovermethod=priority
enabled=1
enabled_metadata=1
gpgcheck=1
gpgkey=https://repo.saltproject.io/py3/redhat/8/x86_64/latest/SALTSTACK-GPG-KEY.pub

#清除缓存
[root@master ~]# yum clean expire-cache

#安装软件包与tree命令
[root@master ~]# dnf install -y salt-master salt-minion
[root@master ~]# dnf install -y tree

#修改minion配置文件
[root@master ~]# cd /etc/salt/
[root@master salt]# ls
cloud           cloud.profiles.d   minion    proxy.d
cloud.conf.d    cloud.providers.d  minion.d  roster
cloud.deploy.d  master             pki
cloud.maps.d    master.d           proxy

[root@master salt]# sed -i '/^#master:/a master: 192.168.10.20' /etc/salt/minion
[root@master salt]# sed -n '/^master/p' /etc/salt/minion
master: 192.168.10.20

#启动salt-master与salt-minion
[root@master ~]# systemctl enable --now salt-master
Created symlink /etc/systemd/system/multi-user.target.wants/salt-master.service → /usr/lib/systemd/system/salt-master.service.
[root@master ~]# systemctl enable --now salt-minion
Created symlink /etc/systemd/system/multi-user.target.wants/salt-minion.service → /usr/lib/systemd/system/salt-minion.service.

#4505和4506都是salt-master的端口号,4505是publish_port    4506是ret_port
[root@master ~]# ss -antl
State  Recv-Q Send-Q Local Address:Port   Peer Address:Port                      Process                      
LISTEN 0      128          0.0.0.0:22          0.0.0.0:*                                                      
LISTEN 0      128          0.0.0.0:4505        0.0.0.0:*                                                      
LISTEN 0      128          0.0.0.0:4506        0.0.0.0:*                                                      
LISTEN 0      128             [::]:22             [::]:*                                                      

在被控制端安装、配置salt-minion

[root@P1 ~]# rpm --import https://repo.saltproject.io/py3/redhat/8/x86_64/latest/SALTSTACK-GPG-KEY.pub
[root@P1 ~]# curl -fsSL https://repo.saltproject.io/py3/redhat/8/x86_64/latest.repo | tee /etc/yum.repos.d/salt.repo
[salt-latest-repo]
name=Salt repo for RHEL/CentOS 8 PY3
baseurl=https://repo.saltproject.io/py3/redhat/8/x86_64/latest
skip_if_unavailable=True
failovermethod=priority
enabled=1
enabled_metadata=1
gpgcheck=1
gpgkey=https://repo.saltproject.io/py3/redhat/8/x86_64/latest/SALTSTACK-GPG-KEY.pub

[root@P1 ~]# yum clean expire-cache
[root@P1 ~]# yum install -y salt-minion

[root@P1 ~]# sed -i '/^#master:/a master: 192.168.10.20' /etc/salt/minion
[root@P1 ~]# sed -n '/^master/p' /etc/salt/minion
master: 192.168.10.20
[root@P1 ~]# systemctl enable --now salt-minion
Created symlink /etc/systemd/system/multi-user.target.wants/salt-minion.service → /usr/lib/systemd/system/salt-minion.service.
[root@P1 ~]# systemctl status salt-minion
● salt-minion.service - The Salt Minion
   Loaded: loaded (/usr/lib/systemd/system/salt-minion>
   Active: active (running) since Thu 2021-07-01 06:28>
     Docs: man:salt-minion(1)
           file:///usr/share/doc/salt/html/contents.ht>
           https://docs.saltstack.com/en/latest/conten>
 Main PID: 790062 (salt-minion)
    Tasks: 8 (limit: 4743)
   Memory: 84.7M
   CGroup: /system.slice/salt-minion.service
           ├─790062 /usr/bin/python3.6 /usr/bin/salt-m>
           ├─790087 /usr/bin/python3.6 /usr/bin/salt-m>
上一篇:Saltstack自动化操作记录(1)-环境部署


下一篇:salt