Ansible - 简介

Ansible 是一个简单的开源 IT 引擎,可自动执行应用程序部署、服务内编排、云配置和许多其他 IT 工具。

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

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

Ansible 专为多层部署而设计。 Ansible 不会一次管理一个系统,它通过描述所有相互关联的系统来对 IT 基础架构进行建模。 Ansible 是完全无代理的,这意味着 Ansible 通过 ssh(默认情况下)连接您的节点来工作。 但是,如果您想要其他连接方法,例如 Kerberos,Ansible 会为您提供该选项。

连接到您的节点后,Ansible 会推送称为"Ansible 模块"的小程序。 Ansible 在您的节点上运行该模块并在完成后将其删除。 Ansible 在简单的文本文件(这些是主机文件)中管理您的清单。 Ansible 使用 hosts 文件,可以在其中对主机进行分组,并可以控制 playbook 中特定组的操作。

主机文件示例

这是hosts文件的内容 −

#File name: hosts
#Description: Inventory file for your application. Defines machine type abc
node to deploy specific artifacts
# Defines machine type def node to upload
metadata.

[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和清单,一次性在所有机器上安装 WebLogic/WebSphere。 您所要做的就是在清单中列出您的节点的 IP 地址,并编写一个安装 WebLogic/WebSphere 的playbook。 从您的控制机运行playbook & 它将安装在您的所有节点上。


Ansible 是如何工作的?

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

Ansible works 通过连接到您的节点并推出小程序,称为 "Ansible 模块"。 Ansible 然后执行这些模块(默认通过 SSH),并在完成后删除它们。 您的模块库可以驻留在任何机器上,并且不需要服务器、守护程序或数据库。

Ansible Works

上图中的管理节点是控制节点(managing node),控制整个playbook的执行。 它是您从中运行安装的节点。 清单文件提供了需要运行 Ansible 模块的主机列表,管理节点进行 SSH 连接并在主机上执行小模块并安装产品/软件。

Ansible 的Beauty在于,一旦安装了模块,它就会删除模块,它非常有效地连接到主机,执行指令,如果成功安装,则会删除复制到主机上执行的代码。