Ansible是什么——终极指南

Ansible是用于管理云端或数据中心基础设施变更的最广泛使用的DevOps工具。在本文中,您将了解Ansible的工作原理以及如何开始使用它。

什么是Ansible?

Ansible是一个自动化平台工具,用于在多个服务器上轻松部署应用程序和系统配置。它可用于启动Linux服务、创建数十个Linux用户、更新密码等等。

Ansible是一个无代理的解决方案,通过安全外壳主机(SSH)协议管理机器。它需要一个数据库,但不使用任何后台服务(守护程序)。

Ansible使用内置的临时命令和Ansible playbooks来部署软件或执行命令。此外,Ansible包含数百个模块,用于部署或配置远程节点。

Ansible的工作原理

现在,您已经对Ansible是什么有了基本的了解。但是要使Ansible正常工作,您将需要四个组件:

  1. Ansible控制节点,也被称为Ansible控制器主机,是安装了Ansible的服务器。这个节点执行所有的Ansible临时命令和Ansible Playbook来部署或管理远程节点上的配置或软件。
  2. Ansible远程节点,也被称为Ansible托管节点,是部署应用程序或配置的服务器或网络设备,使用Ansible临时命令或Ansible Playbook。这些也被称为Ansible主机。
  3. Ansible清单 是位于Ansible控制器主机或控制节点上的一个文件,其中包含所有远程主机或托管节点的列表。
  4. Ansible模块,也被称为Ansible核心模块,是可以从命令行或Playbook任务中使用的代码插件或库插件。Ansible通常在远程托管节点上执行每个模块。

为什么使用Ansible?

在IT领域工作时,您可能一遍又一遍地执行相同的任务。如果您能解决一次问题,然后将解决方案自动化以供未来使用呢?Ansible是一种配置管理工具,可以帮助您轻松高效地管理和部署远程节点上的软件。

Ansible拥有数百个模块,这些模块可在管理远程服务器时使用。Ansible模块分为两部分:

  • Ansible核心模块(或ansible-core),如前所提,是Ansible的主要构建模块和架构。它们由核心Ansible团队拥有和管理,并将始终随Ansible一起发布。
  • Ansible集合是Ansible的一种分发格式,您可以使用它来打包和分发剧本、角色、模块和插件。典型的集合涵盖一组相关的用例。您可以创建集合并将其发布到Ansible Galaxy

? Ansible Galaxy 指的是Galaxy网站,用户可以在该网站上共享角色、安装、创建和管理Ansible模块。

Ansible的用例

如果你问我关于 Ansible 的主要用例,我无法列出所有,因为 Ansible 能做的事情有数百种。从基本任务开始,比如在远程节点上重新启动服务,到部署Tomcat 应用

让我们看一些 Ansible 显得有用的用例:

  • 如果你需要用单个命令在不同系统上执行任务和剧本,你可以使用Ansible 变量
  • 要从多个系统中检索数据,你可以使用Ansible 事实。Ansible 事实是从目标节点收集的数据,并返回给控制节点。
  • Ansible 保险库可用于访问诸如密码之类的敏感数据,或者使用安全密码部署应用程序。
  • Ansible具有查找功能,可用于访问数据库和API以从外部数据存储检索数据。

Ansible安装选项

Ansible是一款易于安装的工具,在多个操作系统上得到支持。让我们快速看一下Ansible支持哪些操作系统。

Ansible能在Windows上运行吗?

您无法在Windows上安装Ansible。但是,您可以使用它来管理基于Windows的操作系统。以下是一些可能的用例:

  • 在Windows主机上收集Ansible信息。
  • 安装和卸载MSI。
  • 启用/禁用Windows功能。
  • 启动、停止和管理Windows服务。

Ansible配置管理

在运行第一个Ansible命令之前,您应该了解如何配置您的Ansible Controller主机、Ansible清单、Ansible播放书等。

The Ansible清单文件 包含所有Ansible远程节点或分组的远程节点列表,在部署或管理资源时Ansible会使用这些信息。

有两种不同的方法可以存储Ansible清单:

  1. 默认情况下,Ansible清单存储在/etc/ansible/hosts文件中。
  2. 您还可以通过在命令行中指定-I <路径>选项来使用自定义路径。

此外,有两种方式可以配置Ansible清单:

  • INI格式:INI文件是一个配置文件,包含在方括号中的组名来分配不同组中的主机。在下面的示例中,server1.abc.com没有分配到任何组;然而,server3.abc.com和server4.abc.com是Group1的一部分。
server1.abc.com

[Group1]

server3.abc.com

server4.abc.com
  • YAML格式:声明Ansible清单的另一种方式是使用YAML,它是JSON的一个超集,另一种数据序列化语言。以下是YAML格式的语法定义。

类似于我们上面为INI格式代码解释的内容,这里有两台服务器(server3.abc.com和server4.abc.com)是Group1组的成员。

all:

  hosts:

     server1.abc.com

  children:

      Group1:

        hosts:

          server3.abc.com

          server4.abc.com

Ansible即席命令

如果您需要在Ansible远程节点上执行类似重新启动或启动Linux服务的快速任务,则可以使用Ansible即席命令。即席命令是在远程节点上运行单个命令的一种快速有效的方式。

例如,要使用Ansible临时命令ping所有Ansible远程节点,您需要运行下面的命令。这里,“all”代表在Ansible清单中配置的所有主机,而“-m”是与ping模块一起使用的标志。

ansible all -m ping 
Using an Ansible Ad hoc command to ping all Ansible remote nodes

什么是Ansible剧本?

当您需要同时执行多个Ansible任务时,您需要使用Ansible剧本。

Ansible剧本允许您部署复杂的应用程序,并提供可重复使用和简单的配置管理。它们还支持多机部署,并可用于多次执行多个任务。

Ansible剧本采用YAML格式编写,并包含按顺序执行的多个任务。下面显示了一个Ansible剧本的示例。

在这个示例中,Ansible剧本包含两个Ansible任务(1和2),它们在远程节点上安装Apache和Java。

# Playbook apache.yml

---

- name: Ansible Playbook Examples

  hosts: servers                                         # Define all the hosts

  remote_user: ubuntu                                    # Remote_user is ubuntu

  # Defining the Ansible tasks

  tasks:                                                

  - name: Ansible Task 1

    apt:

      name: httpd

      state: latest

  tasks:                                                 

  - name: Ansible Task 2

    apt:

      name: open-jdk

      state: latest

Ansible Tower:基于Web的解决方案

尽管您现在对Ansible的工作原理有了很好的了解,但如果您希望在不必管理或安装它的情况下使用它呢?

Ansible托管在Linux机器上。但如果您希望使用云版本,而不必头疼地管理本地Ansible,那么可以使用Ansible Tower,这是一个基于Web的解决方案。在云版本中,您仍然可以使用模块来配置或管理远程机器,并执行Ansible命令或Ansible Playbooks。

Ansible Tower还允许您控制所有用户的访问权限,管理SSH凭据和Ansible清单。它还记录了所有作业,与轻量目录访问协议(LDAP)集成良好,并具有出色的可浏览REST API。Ansible Tower具有扩展服务器和实例的能力,以便在远程节点上运行多个任务时使用。

结论

Ansible是一个免费工具,具有许多功能。通过本指南,您现在应该了解这个功能丰富的工具的可能性!从管理配置,使用各种Ansible模块到执行临时命令,Ansible剧本和部署数十种软件工具,Ansible是最广泛使用的自动化工具之一。

现在您对Ansible的工作原理有了很好的了解,您计划使用它部署什么?

相关文章:


Source:
https://petri.com/what-is-ansible/