type
status
date
slug
summary
tags
category
icon
password
Ansible 介绍
Ansible 是什么?
Ansible 是一个开源的 IT 自动化平台,主要用于配置管理、应用程序部署、和任务自动化。它的设计目标是帮助系统管理员和开发人员简化日常管理工作,通过减少手动操作的复杂性和错误率,使大规模的服务器和设备管理变得更加高效。
Ansible 使用无代理(agentless)架构,通过 SSH 或者 WinRM(Windows Remote Management)直接与受管节点进行通信,因此不需要在每个受管节点上安装额外的代理程序。
灵机一动;为什么是无代理的,其实本质上接受Ansible帮你登陆到受管节点,帮你执行Python的库。完成机器层面的配置

Ansible 的主要特点:
- 简单直观:Ansible 使用 YAML 语法编写 playbooks(剧本),这使得配置文件易于阅读和编写。
- 无代理架构:无需在受管节点上安装代理,只需在控制节点上运行 Ansible。
- 模块化:Ansible 提供了大量的模块来执行各种任务,例如用户管理、软件安装、服务配置等。
- 可扩展性强:用户可以编写自定义模块,并将其集成到 Ansible 中。
- 支持多平台:不仅支持 Linux 系统,还支持 Windows 系统和网络设备。
- 幂等性:Ansible 确保每次执行时都达到预期状态,不会重复应用相同的变更,保证系统的一致性。例如,如果一个 playbook 指定安装某个软件,Ansible 会先检查是否已安装该软件,如果已安装,则跳过安装步骤。
Ansible 被广泛应用于 DevOps 场景中的自动化运维、持续集成和持续交付(CI/CD)等任务中。
• Ansible本身没有批量部署的能力,是由所运行的模块实现批量部署,Ansible只是提供一种框架

- Ansible:核心:
- Core Modules:核心模块,都是ansible自带的模块
- Custom Modules:扩展模块,若核心模块不足以完成某种功能,可以添加扩展模块
- Plugins:插件,完成模块功能的补充
- Playbooks:剧本,Ansible的任务配置文件,将多个任务定义在剧本中,由Ansible自动执行
- Connectior Plugins:连接插件,Ansible基于连接插件连接到各个主机上,虽然Ansible是使用
- ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
- Host Inventory:主机群,定义ansible管理的主机
常见疑问:Ansible 和 Kubernetes 的区别
Ansible 和 Kubernetes 的确有一些共同点,例如它们都涉及到自动化和任务管理。然而,它们的设计目标和应用场景却大不相同。
- Ansible:专注于配置管理和任务自动化,是一种通用的 IT 自动化工具。它适合用于对服务器和 IT 基础设施进行整体管理。
- Kubernetes:专注于容器编排,管理容器化的应用程序。它确保容器的高可用性、自动扩展以及资源的优化利用。
因此,Ansible 更适合管理服务器的操作系统层面配置,而 Kubernetes 则用于管理在服务器上运行的容器化应用程序。两者可以配合使用:通过 Ansible 管理服务器配置,然后用 Kubernetes 管理容器化的应用程序,达到更高效的系统管理效果。
为什么使用 Ansible?
自动化与 Linux 系统管理:手动管理系统的方式容易出错,尤其在多个服务器存在配置差异的情况下,维护复杂度较高。自动化能够实现快速、精确的部署和配置,减少重复性工作并提升效率。
基础架构即代码:Ansible 让“基础架构即代码”得以实现。管理员可以使用机器可读的语言定义所需的系统配置,通过版本控制管理变更,确保环境一致性并且能够轻松回滚。
减少人为错误:自动化减少了手动操作的需求,从而降低了人为错误的风险。通过代码审查和文档记录,确保系统保持预期的状态。
Ansible 的版本介绍
Ansible Core
- Ansible Core 是 Ansible 的基础组件,包含了核心功能模块。
- 可通过 Python 的 pip 包管理工具来安装 Ansible Core。
红帽企业 Linux 中的 Ansible Core
- 在红帽企业 Linux 9 中,Ansible Core 以 RPM 包的形式提供。
- 它支持执行 Ansible Playbook,并能与其他工具(如 OpenSCAP)集成。
红帽 Ansible 自动化平台
红帽 Ansible 自动化平台扩展了 Ansible Core,包含了更多的工具和资源,帮助企业更好地管理自动化任务:
- Ansible Core:核心功能模块。
- Ansible 内容集合:包含大量内置模块(如
ansible.builtin
)和社区共享模块。用户可以通过 Ansible Galaxy 下载和分享内容集合,目前该平台上有超过 120 个集合。
- Ansible Navigator:一种用于运行和管理 Ansible 任务脚本的工具。它包含了常用的 Ansible 命令,如
ansible-playbook
(执行任务脚本)、ansible-inventory
(管理主机列表)和ansible-config
(配置 Ansible 设置)。Ansible Navigator 支持在容器中运行任务,确保任务环境隔离并便于维护。
- 完整的自动化执行环境
自动化执行环境
自动化执行环境是一个容器化环境,包含了 Ansible Core、Ansible 内容集 和 运行 Playbook 所需的 Python 库。Ansible Tower 可以调用这些执行环境来执行 playbook。
- Ansible Tower:企业级的自动化控制器,提供了 Web 界面和 REST API 用于管理和监控自动化任务。它就像一个集中指挥中心,可以管理所有的自动化流程。
- 用户可以通过 Red Hat 的控制台(如 console.redhat.com)访问 Ansible Galaxy 和 Ansible Navigator 等资源。Ansible Galaxy 则是一个开放的社区资源库,适合个人用户和开发者获取和分享各种 Ansible 资源。
- 自动化中心(Automation Hub):Red Hat 提供的资源库,用户可以在此找到各种 Ansible 内容和模块,方便导入并用于项目中。 主要面向企业用户,提供经过认证和支持的内容集合,适合在生产环境中使用。

Ansible 的自动化工作流程
Ansible 的自动化流程可以简单地分为以下几个步骤:
- 安装 Ansible Navigator:首先,通过命令行使用
sudo dnf install ansible-navigator
安装 Ansible Navigator,这是用于管理和执行 Ansible 任务的重要工具。
- 下载执行环境的容器镜像:使用容器技术(如 Podman)下载与 Ansible Navigator 配合使用的执行环境容器镜像。您可以通过以下命令进行下载:
这一步确保您有一个包含所需工具和依赖的环境来运行自动化任务。
- 创建执行环境:通过 Ansible Builder 创建一个执行环境,确保它包含运行自动化任务所需的所有工具和依赖项。
- 开发和运行任务:使用 Ansible Navigator 编写和执行自动化任务的 playbook。该工具利用已创建的执行环境来执行任务,从而确保环境的一致性和稳定性。
- 执行环境的优点:执行环境可以方便地随时使用,适用于多种任务场景,且具备灵活扩展的能力,能够满足不同的自动化需求。
通过这些步骤,用户能够高效地管理和执行大规模的自动化任务,确保 IT 基础设施的一致性、可扩展性和可靠性。
实操
安装和使用 Ansible Navigator
步骤 1:安装 Ansible Navigator
在控制节点上,使用以下命令安装 Ansible Navigator:
步骤 2:验证 Ansible Navigator 是否安装成功
安装完成后,验证系统上是否已成功安装 Ansible Navigator,使用以下命令查看版本:
输出示例:
步骤 3:登录到容器镜像仓库
使用 Podman 登录到 Red Hat 的容器镜像仓库:
在提示下输入您的注册用户名和密码:
登录成功后,您将看到类似“Login Succeeded”的消息。
步骤 4:下载执行环境的容器镜像
下载您准备与 Ansible Navigator 一起使用的执行环境容器镜像。使用以下命令下载:
用户的疑问与回答整理
- Ansible Navigator 需要在容器环境执行吗?
当您在宿主机上运行
ansible-navigator
来执行任务时,会生成一个容器来提供执行环境。这里是执行过程的简要说明:- 调用容器:
ansible-navigator
会使用podman
或docker
等容器工具来启动一个容器,这个容器基于指定的执行环境镜像(比如ee-supported-rhel8:latest
)。
- 任务执行:这个容器包含
ansible-core
以及相关依赖项,用于运行您的 Ansible Playbooks。所有任务都在这个临时生成的容器内执行,确保环境一致且依赖项完整。
- 容器的生命周期:任务完成后,容器会被销毁。也就是说,每次执行任务时都会生成一个新的容器,用于隔离环境,确保任务不会影响宿主机或其他任务。
这种方法的优点是能够在隔离的环境中运行任务,同时减少对宿主机环境的依赖。
步骤 5:验证镜像是否已下载
您可以使用以下命令显示本地可用容器镜像的列表,以验证镜像是否已成功下载:
输出示例:
准备受管主机
Linux 或 UNIX 系统
要准备受管主机以与 Ansible 控制节点配合使用,需要确保以下要求:
- 操作系统:受管主机应运行支持的 Linux 或 UNIX 系统。
- Python 版本:需要安装 Python 3.8 或相应的版本,例如 Linux 8 的
platform-python
。
- SELinux:确保受管主机安装了
python3-libselinux
,以支持与复制、文件或模板相关的模块。
- 软件包管理:可以使用 Ansible 的
ansible.builtin.dnf
或ansible.builtin.package
模块来管理软件包。
- SSH 和 sudo:Ansible 使用 SSH 进行连接,并通过 sudo 获取超级用户权限,以便执行需要高权限的操作。
满足以上条件后,受管主机将能够有效地与 Ansible 控制节点交互,从而确保系统处于预期状态。
Microsoft Windows 受管主机的要求
- 操作系统:受管主机需要运行 Microsoft Windows,并支持 Ansible。
- PowerShell:必须安装 Microsoft Windows PowerShell 3.0 或更高版本。
- Python:需要安装 Python,以支持 Ansible 模块的运行。
- .NET Framework:需要安装 .NET Framework 4.0,以便 Ansible 正常工作。
网络设备受管主机
- 支持的设备:Ansible 可以管理多种网络设备,包括 Cisco IOS、IOS XR、NX-OS、Juniper Junos、Arista EOS 以及其他基于网络操作系统的设备。
- 连接方式:通常使用 SSH 或 HTTP(S) API 进行特殊连接,以便与网络设备通信。
额外资源
有关 Microsoft Windows 和网络设备管理的更多信息,可以访问以下链接:
- Ansible Network Automation Documentation
练习:
安装Ansible
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/122d7ae8-88e2-80fb-8a55-d861d3100dda
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章