Ansible 怎么入门?新手该如何快速上手 Ansible 自动化工具?

文章导读
Previous Quiz Next Ansible 是一个简单的开源 IT 引擎,用于自动化应用程序部署、服务内部编排、云资源供应以及许多其他 IT 工具。
📋 目录
  1. 什么是配置管理
  2. Ansible 如何工作?
A A

Ansible - 介绍



Previous
Quiz
Next

Ansible 是一个简单的开源 IT 引擎,用于自动化应用程序部署、服务内部编排、云资源供应以及许多其他 IT 工具。

Ansible 易于部署,因为它不使用任何代理或自定义安全基础设施。

Ansible 使用 playbook 来描述自动化任务,而 playbook 使用非常简单的语言,即 YAML(这是一种人类可读的数据序列化语言,通常用于配置文件,但也可用于许多需要存储数据的地方),人类很容易理解、阅读和编写。因此,即使是 IT 基础设施支持人员也能阅读和理解 playbook,并在需要时进行调试(YAML 是人类可读格式)。

Ansible 专为多层部署而设计。Ansible 不是一次管理一个系统,而是通过描述所有系统之间的相互关系来建模 IT 基础设施。Ansible 完全无代理,这意味着 Ansible 通过 ssh(默认)连接您的节点。但如果您想使用其他连接方式如 Kerberos,Ansible 也提供了该选项。

连接到您的节点后,Ansible 会推送称为 Ansible Modules 的小程序。在您的节点上运行这些 modules,然后完成时删除它们。Ansible 使用简单的文本文件(即 hosts 文件)来管理您的 inventory。Ansible 使用 hosts 文件,您可以在其中对主机进行分组,并在 playbook 中控制特定组的操作。

示例 Hosts 文件

这是 hosts 文件的内容 −

#文件名: hosts
#描述: 您的应用程序的 inventory 文件。定义机器类型 abc
节点,用于部署特定 artifacts
# 定义机器类型 def 节点,用于上传
元数据。

[abc-node]
#server1 ansible_host = <target machine for DU deployment> ansible_user = <Ansible
user> ansible_connection = ssh
server1 ansible_host = <your host name> ansible_user = <your unix user>
ansible_connection = ssh

[def-node]
#server2 ansible_host = <target machine for artifact upload>
ansible_user = <Ansible user> ansible_connection = ssh
server2 ansible_host = <host> ansible_user = <user> ansible_connection = ssh

什么是配置管理

就 Ansible 而言,配置管理意味着通过记录和更新描述企业硬件和软件的详细信息,来维护产品性能的配置。

此类信息通常包括已安装软件包的确切版本和更新,以及硬件设备的的位置和网络地址。例如,如果您想在企业中的所有机器上安装新版本的 WebLogic/WebSphere 服务器,手动逐一更新每台机器是不现实的。

您可以使用 Ansible playbook 和 inventory 以最简单的方式一次性在所有机器上安装 WebLogic/WebSphere。只需在 inventory 中列出您的节点 IP 地址,并编写一个安装 WebLogic/WebSphere 的 playbook。从您的控制机器运行 playbook,它就会安装到所有节点上。

Ansible 如何工作?

下图展示了 Ansible 的工作原理。

Ansible 的工作方式是通过连接到你的节点并推送小型程序,这些程序称为“Ansible 模块”。Ansible 然后执行这些模块(默认通过 SSH),并在完成后删除它们。你的模块库可以驻留在任何机器上,且无需服务器、守护进程或数据库。

Ansible Works

上图中的管理节点是控制节点(管理节点),它控制整个 playbook 的执行。这是你运行安装的节点。inventory 文件提供了需要运行 Ansible 模块的主机列表,管理节点通过 SSH 连接到这些主机,并在主机上执行小型模块并安装产品/软件。

Ansible 的优势在于它会在模块安装完成后删除它们,因此它有效地连接到主机,执行指令,如果安装成功,则删除复制到主机并执行的代码。