使用 Ansible 进行配置管理简介

简介

配置管理是以确保随时间推移的完整性的方式处理系统更改的过程,通常涉及促进自动化和可观察性的工具和过程。尽管这个概念不是起源于IT行业,但这个术语被广泛用于指服务器配置管理

在服务器环境中,配置管理通常也称为IT自动化或服务器编排。这两个术语都突出了配置管理的实际方面,以及从中央服务器控制多个系统的能力。

本指南将带您了解使用配置管理工具自动设置服务器基础架构的好处,以及这样的工具Ansible,可以帮助您实现这一点。

使用配置管理工具的好处

市场上有许多配置管理工具,具有不同程度的复杂性和不同的体系结构风格。尽管这些工具各有其自身的特点和工作方式略有不同,但它们都提供了相同的功能:确保系统的状态与一组供应脚本所描述的状态相匹配。

服务器配置管理的许多好处来自将您的基础设施定义为代码的能力。这使您能够:

  • 使用版本控制系统跟踪基础架构中的任何更改
  • 针对多个服务器环境(如开发、测试和生产)重复使用资源调配脚本
  • 在同事之间共享配置脚本,以促进标准化开发环境中的协作
  • 简化复制服务器的流程,便于从严重错误中恢复

此外,配置管理工具为您提供了一种从集中位置控制一到数百台服务器的方法,这可以显著提高服务器基础设施的效率和完整性。

==同步,由Elderman更正==@elder_man

Ansible是一个现代的配置管理工具,它简化了设置和维护远程服务器的任务,其最低限度的设计旨在让用户快速启动和运行。

用户使用Yaml,)编写可用的配置脚本,这是一种用户友好的数据序列化标准,不受任何特定编程语言的约束。与同类别的类似工具相比,这使用户能够更直观地创建复杂的配置脚本。

Ansible不需要在将使用此工具管理的节点上安装任何特殊软件。一台装有Ansible软件的控制机随后通过标准SSH与节点进行通信。

作为一个配置管理工具和自动化框架,Ansible封装了同类其他工具的所有常见功能,同时仍然非常注重简单性和性能:

幂等行为

Ansible会跟踪托管系统中资源的状态,以避免重复执行以前执行的任务。如果已经安装了程序包,它将不会再次尝试安装。目标是在每次资源调配执行后,系统达到(或保持)所需状态,即使您多次运行它。这就是Ansible和其他配置管理工具具有幂等行为的特征。在运行剧本时,您将看到正在执行的每个任务的状态,以及该任务是否在系统中执行了更改。

支持变量、条件、循环

在编写Ansible自动化脚本时,您可以使用变量、条件和循环,以使您的自动化更加通用和高效。

系统事实

Ansible收集有关被管理节点的一系列详细信息,如网络接口和操作系统,并将其作为全局变量提供,称为_System FACTS_。可以在攻略中使用事实,以使您的自动化更具通用性和适应性,根据所配置的系统的不同而表现不同。

模板系统

Ansible使用Jinsa2 Python模板系统来支持动态表达式和变量访问。模板可用于简化配置文件和服务的设置。例如,您可以使用模板在Apache中设置新的虚拟主机,同时对多个服务器安装重复使用相同的模板。

支持扩展和模块

Ansible带有数百个内置模块,以促进常见系统管理任务的自动化编写,例如使用apt安装软件包和使用rsync同步文件,以及处理流行的软件,如数据库系统(如MySQL,PostgreSQL,MongoDB等)和依赖管理工具(如PHP的composer,Ruby的gem,Node的npm等)。除此之外,还有多种方式可以扩展Ansible:当您需要默认情况下不存在的自定义功能时,插件和模块是很好的选择。

您还可以在Ansible Galaxy门户网站中找到第三方模块和插件。

熟悉可理解的概念

现在,我们将查看Ansible术语和概念,以帮助您熟悉本系列中出现的这些术语。

控制节点

A_CONTROL_NODE_是一个安装了Ansible并设置为连接到您的服务器的系统。您可以有多个控制节点,任何能够运行Ansible的系统都可以设置为控制节点,包括运行基于Linux或Unix操作系统的个人计算机或笔记本电脑。目前,Ansible还不能安装在Windows主机上,但您可以通过设置一个运行Linux的虚拟机并从那里运行Ansible来绕过这一限制。

托管节点

您使用Ansible控制的系统称为托管节点。可通过SSH访问托管节点的可能requires,并安装了Python2(版本2.6或更高版本)或Python3(版本3.5或更高版本)。

Ansible支持多种操作系统,包括作为托管节点的Windows服务器。

库存

AnInventory文件包含您将使用Ansible管理的主机的列表。尽管Ansible通常会在安装时创建默认清单文件,但您可以使用每个项目的清单来更好地分离您的基础架构,并避免错误地在错误的服务器上运行命令或剧本。静态清单通常创建为.ini文件,但您也可以使用以任何能够返回JSON的编程语言编写的动态生成的清单。

任务

在Ansible中,a任务是要在托管节点上执行的单个工作单元。要执行的每个操作都被定义为一个任务。任务可以通过临时命令作为一次性操作执行,也可以作为自动化脚本的一部分包含在剧本中。

游龙秘籍

A_PLAKBOOK_包含一个有序的任务列表,以及其他一些指示哪些主机是该自动化的目标、是否使用权限提升系统来运行这些任务的指令,以及用于定义变量或包含文件的可选部分。Ansible按顺序执行任务,而完整的剧本执行称为a_play_。攻略以YAML格式编写。

处理程序♪

处理程序用于对服务执行操作,例如重新启动或停止在受管理节点的系统上活动运行的服务。处理程序通常由任务触发,它们的执行发生在游戏结束时,在所有任务完成之后。这样,例如,如果有多个任务触发重新启动服务,则该服务将只重新启动一次,并且在所有任务执行后才会重新启动。尽管默认处理程序行为效率更高,总体来说也是一种更好的做法,但如果任务需要,也可以强制立即执行处理程序。

角色

A_Role_是一组剧本和相关文件,这些剧本和相关文件被组织到一个预定义的结构中,这是Ansible所知道的。角色有助于将剧本重用和再利用为可共享的细粒度自动化包,以实现特定目标,例如安装Web服务器、安装PHP环境或设置MySQL服务器。

结论

Ansible是一个最低限度的IT自动化工具,它有一个温和的学习曲线,这在一定程度上要归功于它在其配置脚本中使用了YAML。它有大量的内置模块,可用于抽象任务,如安装包和使用模板。其简化的基础设施要求和可访问的语法非常适合那些刚开始使用配置管理的人。

本series,]的下一部分中,我们将看到如何在Ubuntu20.04 server.上安装和开始使用ANSPLE

Published At
Categories with 技术
comments powered by Disqus