Ansible是用于管理云端或数据中心基础设施变更的最广泛使用的DevOps工具。在本文中,您将了解Ansible的工作原理以及如何开始使用它。
什么是Ansible?
Ansible是一个自动化平台工具,用于在多个服务器上轻松部署应用程序和系统配置。它可用于启动Linux服务、创建数十个Linux用户、更新密码等等。
Ansible是一个无代理的解决方案,通过安全外壳主机(SSH)协议管理机器。它需要一个数据库,但不使用任何后台服务(守护程序)。
Ansible使用内置的临时命令和Ansible playbooks来部署软件或执行命令。此外,Ansible包含数百个模块,用于部署或配置远程节点。
Ansible的工作原理
现在,您已经对Ansible是什么有了基本的了解。但是要使Ansible正常工作,您将需要四个组件:
- Ansible控制节点,也被称为Ansible控制器主机,是安装了Ansible的服务器。这个节点执行所有的Ansible临时命令和Ansible Playbook来部署或管理远程节点上的配置或软件。
- Ansible远程节点,也被称为Ansible托管节点,是部署应用程序或配置的服务器或网络设备,使用Ansible临时命令或Ansible Playbook。这些也被称为Ansible主机。
- Ansible清单 是位于Ansible控制器主机或控制节点上的一个文件,其中包含所有远程主机或托管节点的列表。
- 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支持哪些操作系统。
- 您可以在RHEL,CentOS,Fedora、Ubuntu、Debian、具有Portage的Gentoo、FreeBSD、macOS、Solaris、Arch Linux、Slackware Linux、Clear Linux上安装Ansible。
- 您可以使用Python的Pip软件包安装程序来安装Ansible。
Ansible能在Windows上运行吗?
您无法在Windows上安装Ansible。但是,您可以使用它来管理基于Windows的操作系统。以下是一些可能的用例:
- 在Windows主机上收集Ansible信息。
- 安装和卸载MSI。
- 启用/禁用Windows功能。
- 启动、停止和管理Windows服务。
Ansible配置管理
在运行第一个Ansible命令之前,您应该了解如何配置您的Ansible Controller主机、Ansible清单、Ansible播放书等。
The Ansible清单文件 包含所有Ansible远程节点或分组的远程节点列表,在部署或管理资源时Ansible会使用这些信息。
有两种不同的方法可以存储Ansible清单:
- 默认情况下,Ansible清单存储在/etc/ansible/hosts文件中。
- 您还可以通过在命令行中指定-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

什么是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的工作原理有了很好的了解,您计划使用它部署什么?
相关文章: