Ansible自动化运维工具单模块介绍

前言

自动化运维是指利用自动化工具和技术来简化、自动化和优化IT基础设施的管理和运维过程,从而提高效率、降低成本,并减少人为错误。在当今复杂的IT环境中,自动化运维已经成为许多组织和企业提高生产力和保证系统稳定性的重要手段。Ansible作为一种自动化运维工具,在这样的背景下应运而生,它通过简单、灵活的方式实现了IT基础设施的自动化管理。

目录

一、Ansible 简介

1. 自动化运维工具

2. ansible 概述

3. 组成 

4. 特点

5. 工作机制原理

二、安装部署

1. 环境准备

2. 管理节点安装 ansible 

3. 查看相关文件

4. 配置主机清单 

5. 免密管理 ssh-keygen

5.1 测试连通性

5.2 简洁输出 

三、命令行模块

1. command 模块

2. shell 模块 

3. cron 模块 

4. user 模块 

5. group 模块

6. copy 模块

7. file 模块 

8. hostname 模块 

9. ping 模块 

10. yum 模块

11. service/systemd 模块

12. script 模块

13. setup 模块 


一、Ansible 简介

1. 自动化运维工具

有许多自动化工具可供选择,每个都有其自身的特点和适用场景。一些常见的自动化工具包括:

① Puppet(已淘汰)

  • Puppet 是一个用于自动化配置管理的工具,基于 C/S 架构,使用基于 Ruby 的 DSL(领域特定语言)来描述系统配置,并通过 http 协议代理客户端来管理节点。

② Chef (已淘汰)

  • Chef 是一个用于自动化基础架构配置的开源工具。使用基于 Ruby 的 DSL(领域特定语言)来描述系统配置,并通过客户端-服务器(C/S)架构来管理系统。

③ SaltStack(市场占有率低)

  • SaltStack 是一个基础设施自动化平台,具有高度可扩展性和灵活性。它使用基于 Python 的 DSL 来描述系统配置,通过 ssh 协议传输并使用分布式架构来管理节点。

④ Ansible(市场占有率高)

  • Ansible 是一个基于 Python 开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet 和Saltstack 能实现的功能,Ansible 基本上都可以实现。

2. ansible 概述

Ansible是一款开源的自动化工具,通过简洁的DSL(领域特定语言)描述系统配置和任务;在管理节点将 ansible 模块通过 ssh 协议推送到被管理节点执行,执行完自动删除模块或命令。

3. 组成 

  • INVENTORY:Ansible 管理主机的清单 /etc/anaible/hosts 需要管理的服务清单
  • MODULES:Ansible 执行命令的功能模块,多数为内置核心模块,也可自定义
  • PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用
  • API:供第三方程序调用的应用程序编程接口

4. 特点

① 部署简单,只需在主控端部署 Ansible 环境, 被控端无需做任何操作

② 默认使用 SSH 协议设备进行管理;

③ 主从集中化管理

④ 配置简单、功能强大、扩张性强;

⑤ 支持 API 及自定义模块,可以通过 Pyhton 轻松扩展

⑥ 通过 playbooks 来定制强大的配置、状态管理

⑦ 对云计算平台、大数据都有很好的支持

5. 工作机制原理

Ansible 基于模块化工作,本身没有批量部署的能力,真正具有批量部署的是Ansible所运行的模块(Modules)。Ansible 只是提供了一种框架,在 Ansible 管理体系中,存在着管理节点(Control Node)和被管理节点(Managed Node)两种角色。被管理节点通常称之为资产,会放在主机清单(Inventory)文件中,Inventory 其实就是由 Ansible 所管理的主机形成的。在管理节点上,Ansible 将 Ad-Hoc(批量执行单条命令,即单模块)或者 Playbook(任务剧本)转化为 Python 脚本,最终通过 ssh 网络协议将这些 Python 脚本传递到被管理节点,在被管理服务器上依次执行,并且会实时将结果返回给管理节点,执行完后进行清理模块或命令。返回结果顺序根据网络、被管理服务器本身性能等因素有关。

① 管理节点(Control Node)

  • 在控制节点上安装 Ansible,并使用 Ansible 的命令行工具或者其他接口来编写和执行自动化任务;

② 主机清单(Inventory)

  • 控制节点上维护一个主机清单文件,列出了需要管理的目标主机的信息,包括IP地址、主机名等;

③ 任务剧本(Playbook)

  • Playbook 通常是 josn 格式的 YAML 文件,定义了一系列任务和配置信息,用于描述自动化任务的执行流程。Playbook 编排定义 Ansible 任务集的配置文件,由 Ansible 顺序依次执行,相当于多个 Ad-Hoc 的配置文件 ;

④ 单模块(AD-Hoc)

  • 指的是在不使用 Playbook 的情况下,直接使用 ansible 命令行工具执行临时命令。这些命令通常是一次性的、针对特定任务的,而不需要编写长期维护的 Playbook。通过 AD-Hoc 命令,可以快速地在远程主机上执行特定的任务,比如文件操作、软件安装、服务管理等;

⑤ 执行任务模块(Modules)

  • Ansible 提供了丰富的模块,用于执行各种管理任务,比如文件操作、软件包管理、服务管理等; 

⑥ Connection Plugins

  • 在 Ansible 中,默认情况下,Ansible 会利用目标主机上已安装的 Python 解释器来执行远程命令。Ansible 的核心引擎和大部分模块都是基于 Python 编写的,因此要求目标主机上必须安装有Python(通常是2.6版本或以上)才能正常运行 Ansible 管理任务;

⑦ SSH 连接

  • Ansible 使用 SSH 协议来连接目标主机,并在目标主机上执行任务;

⑧ 被管理节点(Managed Node)

  • 是指由 Ansible 进行配置、管理和自动化操作的远程主机或设备。这些被管理节点是 Ansible 控制节点所管理的目标系统,可以是服务器、虚拟机、网络设备或其他类型的计算设备。 

二、安装部署

1. 环境准备

节点名称IP是否安装Ansible
control 管理节点192.168.190.103
managed1 被管理节点192.168.190.104
managed2 被管理节点192.168.190.105
systemctl stop firewalld.service 
setenforce 0vim /etc/hosts
192.168.190.103 control
192.168.190.104 managed1
192.168.190.105 managed2

2. 管理节点安装 ansible 

[root@control ~]# yum install -y epel-release # 先安装epel源
[root@control ~]# yum install -y ansible
[root@control ~]# ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfgconfigured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python2.7/site-packages/ansibleexecutable location = /usr/bin/ansiblepython version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]

3. 查看相关文件

[root@control ~]# tree /etc/ansible/
/etc/ansible/
├── ansible.cfg
├── hosts
└── roles
[root@control ~]# ll /etc/ansible/
总用量 24
-rw-r--r--. 1 root root 19985 1月  16 2022 ansible.cfg
-rw-r--r--. 1 root root  1016 1月  16 2022 hosts
drwxr-xr-x. 2 root root     6 1月  16 2022 roles
# ansible.cfg: 这是Ansible的配置文件。包含了一些全局配置选项,比如默认的模块路径、远程用户等;
# hosts: 这是Ansible的主机清单文件,也称为inventory文件。在这个文件中列出了Ansible将要管理的主机或主机组。通过编辑这个文件,可以添加、删除或修改要管理的主机信息;
# roles: 这是Ansible角色的存放目录。角色是一种组织和重用Playbooks的方式,它将相关的任务、变量和处理逻辑组织成一个可复用的单元。在这个目录中,你可以存放自己编写或从其他地方获取的角色,以便在Playbooks中使用。

4. 配置主机清单 

[root@control ~]# cd /etc/ansible
[root@control ansible]# ls
ansible.cfg  hosts  roles
[root@control ansible]# vim hosts
[webs]           # 配置组名
192.168.190.104  # 组里包含的被管理的主机IP地址或主机名(主机名需要先修改/etc/hosts文件)[dbs]
192.168.190.105

5. 免密管理 ssh-keygen

用于生成SSH密钥对的命令行工具。它通常用于创建公钥和私钥,以便进行安全的SSH通信。 

生成 SSH 密钥对:
[root@control ~]# ssh-keygen -t rsa  # 一直回车
# rsa表示生成RSA密钥对,RSA是一种非对称加密算法
[root@control ~]# ls .ssh/
id_rsa  id_rsa.pub       # id_rsa 是私钥文件;id_rsa.pub 是公钥文件将本地主机上的SSH公钥复制到远程主机:
[root@control ~]# ssh root@192.168.190.104
[root@control ~]# ssh root@192.168.190.105
[root@control ~]# sshpass -p '123' ssh-copy-id root@192.168.190.104
[root@control ~]# sshpass -p '123' ssh-copy-id root@192.168.190.105[root@control ~]# ls .ssh/
id_rsa  id_rsa.pub  known_hosts

5.1 测试连通性

① 测试本机

[root@control ~]# ansible localhost -m ping
localhost | SUCCESS => {                    # 绿色字体"changed": false, "ping": "pong"
}

② 分别测试 managed1 和 mansged2,观察返回信息 

[root@control ~]# ansible webs -m ping
192.168.190.104 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}[root@control ~]# ansible dbs -m ping
192.168.190.105 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}                             # 绿色字体

5.2 简洁输出 

[root@control ~]# ansible 192.168.190.104 -m ping -o
192.168.190.104 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}

三、命令行模块

指的是在不使用 Playbook 的情况下,直接使用 ansible 命令行工具执行临时命令。这些命令通常是一次性的、针对特定任务的,而不需要编写长期维护的 Playbook。通过 AD-Hoc 命令,可以快速地在远程主机上执行特定的任务,比如文件操作、软件安装、服务管理等。

命令格式:
ansible <组名> -m <模块> -a <参数列表>  # 默认模块为command,可省略
ansible-doc -l				          # 列出所有已安装的模块,按q退出

1. command 模块

command 模块允许用户在目标主机上执行特定的命令,主要功能是在远程主机执行命令,此为默认模块,可忽略 -m 选项;此命令不支持 $VARNAME < > | ; & 等,可能用shell模块实现 ;注意此模块不具有幂等性 (幂等性是指在对系统进行操作时,无论执行多少次,系统的状态都保持一致的特性)。以下是 command 模块的一般用法:

ansible <host-pattern> [-m command] -a "<command>"
#<host-pattern> 是要操作的目标主机或主机组。
#-m command 指定要使用的模块是 "command"。
#-a "<command>" 传递给模块的参数,即要在目标主机上执行的命令。[root@control ~]# ansible-doc -s command  # -s 列出指定模块的描述信息和操作动作

示例: 

指定主机执行 date 命令

所有主机执行 date 命令

常用的参数:

chdir:在远程主机上运行命令前提前进入目录
creates:判断指定文件是否存在,如果存在,不执行后面的操作
removes:判断指定文件是否存在,如果存在,执行后面的操作 

示例:

2. shell 模块 

在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令(支持管道符号等功能);和command相似,用shell执行命令支持各种符号,比如:*,$, >,此模块不具有幂等性。

示例:

修改用户密码

查看主机 IP 地址

3. cron 模块 

用于管理 cron 作业(定时任务),支持时间:minute,hour,day,month,weekday。在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移除。

常用的参数:

minute/hour/day/month/weekday:分/时/日/月/周
job:任务计划要执行的命令
name:任务计划的名称

示例:

创建计划任务每分钟打印一次内容、查看计划任务、删除计划任务

 

4. user 模块 

管理系统用户的模块。它允许用户创建、删除和修改系统用户以及相关属性。

常用的参数:

name:用户名,必选参数
state=present|absent:创建账号或者删除账号,present表示创建,absent表示删除
system=yes|no:是否为系统账号
uid:用户uid
group:用户基本组
shell:默认使用的shell
move_home=yse|no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动
password:用户的密码,建议使用加密后的字符串
comment:用户的注释信息
remove=yes|no:当state=absent时,是否删除用户的家目录

示例:

创建用户zs、查看用户信息、删除用户

5. group 模块

管理系统用户组的模块。它允许用户创建、删除和修改系统用户组以及相关属性。

示例:

创建 mysql 组,将用户 lisi 加入到 mysql 组

6. copy 模块

从 ansible 服务器主控端复制文件到远程主机,src=file 如果是没指明路径,则为当前目录或当前目录下的 files 目录下的 file 文件。常用参数如下: 

dest:指出复制文件的目标及位置,使用绝对路径,如果是源目录,指目标也要是目录,如果目标文件已经存在会覆盖原有的内容
src:指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录
mode:指出复制时,目标文件的权限 
owner:指出复制时,目标文件的属主
group:指出复制时,目标文件的属组
content:指出复制到目标主机上的内容,不能与 src 一起使用

示例:

复制文件并设置属主、授权 

7. file 模块 

设置文件属性,创建软链接等,关键字选项如下:

path       #指定文件路径
state      #文件状态 有:新建(touch) 删除(absent) 文件夹(directory)  连接文件(link)等
src        #源文件
mode       #权限
owner      #属主
group      #属组
recurse    #递归,修改属性时有效

示例:

修改文件的属主属组权限

设置/opt/fstab.link为/opt/fstab.bak的链接文件 

创建、删除一个文件 

8. hostname 模块 

用于管理远程主机上的主机名,一般不使用此模块,主机名会一致。

示例:

9. ping 模块 

检测远程主机的连通性

示例:

10. yum 模块

yum 管理软件包,只支持 RHEL,CentOS,fedora,不支持 Ubuntu 其它版本;在远程主机上安装与卸载软件包。

示例:

安装、卸载 tree

[root@control ~]# ansible webs -m yum -a 'name=tree'
[root@control ~]# ansible webs -m yum -a 'name=tree state=absent'

11. service/systemd 模块

它可以启动、停止、重新启动和重新加载系统服务;用于管理远程主机上的管理服务的运行状态;常用的参数:

name:被管理的服务名称
state=started|stopped|restarted:动作包含启动关闭或者重启
enabled=yes|no:表示是否设置该服务开机自启
runlevel:如果设定了enabled开机自启去,则要定义在哪些运行目标下自启动

示例:

查看 dbs 服务器 httpd 运行状态、启动或停止 httpd 服务

12. script 模块

在远程主机上运行 ansible 服务器上的脚本(无需执行权限,本身不执行),此模块不具有幂等性。 

示例:

[root@control ~]# vim cs.sh
#!/bin/bash
echo "hello" > /opt/script.txt
[root@control ~]# chmod +x cs.sh

13. setup 模块 

收集有关远程主机的各种系统信息。这些信息包括操作系统类型、IP 地址、内存和 CPU 使用情况、磁盘空间以及许多其他有用的系统级信息。这些 facts 信息可以直接以变量的形式使用,但是如果主机较多,会影响执行速度。可以使用 gather_facts: no 来禁止 Ansible 收集 facts 信息。

常用参数:

gather_subset: #指定要收集的子集信息,例如all, network, hardware, virtual等。
gather_timeout:#设置收集信息的超时时间,以秒为单位。
filter:        #用于过滤输出信息,可以根据需要选择性地显示特定信息。
fact_path:     #指定一个目录,将收集到的信息保存为 JSON 文件。
retries:       #在发生连接问题时尝试重新连接的次数。

示例:

查看主机信息并过滤有关 ipv4 的信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/7159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划算法:路径问题

例题一 解法&#xff08;动态规划&#xff09;&#xff1a; 算法思路&#xff1a; 1. 状态表⽰&#xff1a; 对于这种「路径类」的问题&#xff0c;我们的状态表⽰⼀般有两种形式&#xff1a; i. 从 [i, j] 位置出发&#xff0c;巴拉巴拉&#xff1b; ii. 从起始位置出…

使用Simcenter全面评估SiC 器件的特性

内容摘要 传统的硅金属-氧化物-半导体场效应晶体管 (MOSFET) 具有成熟的技术和低廉的成本&#xff0c;在中压和绝缘栅双极晶体管 (IGBT) 高压功率电子器件中占主导地位。使用碳化硅等具有高电离能的新型宽带隙材料&#xff0c;可以制造出具有快速开关时间和超过1,000伏击穿电压…

博客网站SpringBoot+Vue项目练习

博客网站SpringBootVue简单案例 前言 学了vue后一直没用找到应用的机会&#xff0c;在Github上找到了一个看起来比较友好的项目&#xff08;其实具体代码我还没看过&#xff09;。而且这个项目作者的readme文档写的也算是比较好的了。 项目链接&#xff1a;https://github.c…

【LeetCode刷题】739. 每日温度(单调栈)

1. 题目链接2. 题目描述3. 解题方法4. 代码 1. 题目链接 739. 每日温度 2. 题目描述 3. 解题方法 用一个栈st保存每个数的下标&#xff0c;同时创建一个数组res保存结果&#xff0c;初始值都为0。循环遍历题目中的数组temperature。如果temperature[i] > st.top()&#x…

Linux--IIC驱动编程实验

对于 I2C 主机驱动&#xff0c;一旦编写完成就不需要再做修改&#xff0c;其他的 I2C 设备直接调用主机驱动提供的 API 函数完成读写操作即可。这个正好符合 Linux 的驱动分离与分层的思想&#xff0c;因此 Linux内核也将 I2C 驱动分为两部分&#xff1a; ①、 I2C 总…

虚拟化之---virtio通信

一、理解virtio的背景 我们知道虚拟化hypervisor大的类型分为两种&#xff0c;全虚拟化和半虚拟化。 在全虚拟化的解决方案中&#xff0c;guest VM 要使用底层 host 资源&#xff0c;需要 Hypervisor 来截获所有的请求指令&#xff0c;然后模拟出这些指令的行为&#xff0c;这样…

Java毕设之学院党员管理系统的设计与实现

运行环境 环境说明: 开发语言:java 框架:springboot&#xff0c;vue JDK版本:JDK1.8 数据库:mysql5.7(推荐5.7&#xff0c;8.0也可以) 数据库工具:Navicat11 开发软件:idea/eclipse(推荐idea) Maven包:Maven3.3.9 系统实现 管理员功能实现 党员管理 管理员进入指定功能操作…

算法学习:二分查找

&#x1f525; 引言 在现代计算机科学与软件工程的实践中&#xff0c;高效数据检索是众多应用程序的核心需求之一。二分查找算法&#xff0c;作为解决有序序列查询问题的高效策略&#xff0c;凭借其对数时间复杂度的优越性能&#xff0c;占据着算法领域里举足轻重的地位。本篇内…

如何使用resource-counter统计跨Amazon区域的不同类型资源数量

关于resource-counter resource-counter是一款功能强大的命令行工具&#xff0c;该工具基于纯Python 3开发&#xff0c;可以帮助广大研究人员跨Amazon区域统计不同类型资源的数量。 该工具在统计完不同区域的各类资源数量后&#xff0c;可以在命令行中输出并显示统计结果。res…

【driver5】调用堆栈函数,printk,动态打印,ftrace,proc,sysfs

文章目录 1.内核函数调用堆栈&#xff1a;4个函数2.printk&#xff1a;cat /proc/cmdline查看consolettyS03.动态打印&#xff1a;printk是全局的且只能设打印等级&#xff0c;动态打印可控制选择模块的打印&#xff0c;在内核配置打开CONFIG_DYNAMIC_DEBUG4.ftrace&#xff1a…

贪吃蛇项目(小白保姆级教程)

游戏介绍 游戏背景&#xff1a; 贪吃蛇游戏是经典的游戏项目之一&#xff0c;也是很简单的小游戏 实现背景&#xff1a; 这里我们是基于32位的Win32_API进行实现的 需要的知识点&#xff1a; C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32_API等 适合人群&a…

分布式光伏管理系统和一般的光伏管理系统相比有什么区别?

随着全球对可再生能源的关注度日益提高&#xff0c;光伏技术作为其中的佼佼者&#xff0c;已经得到了广泛的应用。在光伏技术中&#xff0c;管理系统扮演着至关重要的角色&#xff0c;它关乎着光伏电站的运行效率、能源产出以及运维成本等多个方面。其中&#xff0c;分布式光伏…

搜索算法系列之四(斐波那契)

以下算法被验证过&#xff0c;如有什么问题或有补充的欢迎留言。 前言 斐波那契数列&#xff0c;又称黄金分割数列&#xff0c;是由意大利数学家&#xff08;Leonardo Fibonacci&#xff09;在1202年提出的。这个数列的递推关系是F(0)1&#xff0c;F(1)1&#xff0c;F(n)F(n-…

【数据库】docker搭建mysql8一主两从节点,配置proxysql读写分离

docker搭建mysql8一主两从节点&#xff0c;配置proxysql读写分离 一、docker 搭建 mysql8 一主两从节点1.1 相关配置文件与docker启动1.2 半同步复制1.3 主从同步异常处理 二、mysql 中间件 ProxySql 配置读写分离2.1 在mysql服务里创建给proxySQL访问的用户2.2 安装ProxySql及…

测试用例执行的结果pass_fail_block_skip

pass fail block skip 测试用例的执行结果通常包括以下几个方面&#xff1a; 1. **测试结果状态**&#xff1a;通常分为“通过”、“失败”、“阻塞”和“跳过”等状态。 - **通过**&#xff1a;测试用例执行完毕&#xff0c;预期结果与实际结果一致。 - **失败**&am…

【MySQL】——用户和权限管理(二)

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

大模型争霸的下一站:不仅是超越GPT-4,更是寻求模型之间的平衡应用

文 | 智能相对论 作者 | 沈浪 知名科学杂志《Nature》发表了一篇关于大模型规模参数大小争议的文章《In Al, is bigger always better?》——AI大模型&#xff0c;越大越好吗&#xff1f;随着大模型应用走向实践&#xff0c;这一问题不可避免地成为了当前AI行业发展的焦点与…

OpenGL 入门(二)—— 渲染摄像头采集的预览画面

本篇主要内容&#xff1a; 将摄像头采集到的图像通过 OpenGL 绘制到屏幕上FBO 离屏渲染 在开始上述流程前&#xff0c;我们有必要对 SurfaceTexture 做一个简单了解&#xff0c;因为 OpenGL 需要通过它获取要绘制的图像。 1、认识 SurfaceTexture SurfaceTexture 是 Androi…

(论文阅读-优化器)Selectivity Estimation using Probabilistic Models

目录 摘要 一、简介 二、单表估计 2.1 条件独立Condition Independence 2.2 贝叶斯网络Bayesian Networks 2.3 查询评估中的贝叶斯网络 三、Join选择性估计 3.1 两表Join 3.2 概率关系模型 3.3 使用PRMs的选择性估计 四、PRM构建 4.1 评分标准 4.2 参数估计 4.3 结…

堡垒机——网络技术手段

目录 一、简介 1.什么是跳板机 2.跳板机缺陷 3.什么是堡垒机 4.为什么要使用堡垒机 4.1堡垒机设计理念 4.2堡垒机的建设目标 4.3堡垒机的价值 4.4总结 5.堡垒机的分类 6.堡垒机的原理 7.堡垒机的身份认证 8.堡垒机的运维方式常见有以下几种 9.堡垒机其他常见功能…