Ansible Galaxy:您需要知道的一切

已发表: 2022-09-29

Ansible 是一种流行的开源配置管理工具。 另一方面,Ansible Galaxy 是 Ansible 角色的存储库。

作为初学者的系统管理员,您可能只有少量的剧本。 随着您的自动化技能提高并且您对 Ansible 更加熟悉,您将学习所有最佳实践。 当您增加剧本时,您也会意识到 Ansible Galaxy 的重要性。

什么是 Ansible Galaxy?

Ansible Galaxy 是一个基于 Web 的开源在线存储库,用于存储 Ansible 内容(主要是角色和集合)。 就好像你创造了一些新的东西并想与他人分享一样。

如果您对 Ansible 自动化有任何问题或需要其他人提供的预打包解决方案来启动您的自动化项目,Ansible Galaxy 可以提供帮助。 例如,您可以拥有角色、集合、模块或插件。 许多社区成员已经上传了他们的 Ansible 集合和角色。

Ansible-Galaxy-2

要完成诸如从 Galaxy 或任何 git SCM 安装角色、创建或删除角色或在 Galaxy 站点上执行某些任务等任务,我们可以使用“ansible-galaxy”命令。 该命令预装在 Ansible 中,因此您可以在安装 Ansible 后立即使用它。

Galaxy 项目是一个开源项目,它允许我们托管我们的内部 Galaxy 服务器。 要使用内部 Galaxy 服务器,您必须使用 Galaxy 内部服务器的服务器地址编辑Ansible.cfg文件中的默认配置,因为默认情况下,它使用服务器地址galaxy.ansible.com。

Ansible 概述

Ansible 可以被描述为一个可以自动化和扩展各种规模的基础设施的乘法器。 它可用于管理配置、编排部署和其他功能。 Ansible 很容易设置。 即使是新手系统管理员也可以使用 Ansible 在短短几个小时内实现基础架构自动化。

Ansible 通过使用 SSH 协议实现自动化。 控制机制使用 SSH 连接与其目标主机(通常是 Linux 主机)进行通信。 Windows 系统管理员仍然可以使用 Ansible 通过 WinRM 而不是 SSH 来自动化他们的 Windows 环境。 控制机器必须仍然运行 Linux。

Ansible 可以执行常见的系统管理员任务,例如修补、更新、组和用户管理、配置和其他管理任务。

Ansible 是当今使用最广泛和流行的配置管理、编排和部署工具。 它的简单性是它的主要优势之一。 它简单、强大,但无需代理。 这意味着新的或入门级的系统管理员可以在几个小时内自动化基础设施。 Ansible 允许快速扩展、提高效率和跨功能。

在 Ansible Galaxy 上工作

接下来,让我们打开终端并使用 Ansible Galaxy 运行一些命令。 但在此之前,您必须在系统上安装最新的 Ansible。

当您在系统上安装了最新的 Ansible 后,只需在终端中输入 ansible-galaxy,您将获得 Galaxy 可用的所有选项。

 ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy 
银河系

首先,您可以从 init 命令开始并创建一个角色。 在这里,我正在创建一个角色“测试”。 使用 ls 命令检查角色是否创建成功。 init 命令还在测试角色目录中创建必要的文件。

 ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy init testing
ansible-galaxy-init

Ansible Galaxy 是一个庞大而活跃的社区,其中已经创建了许多可以直接使用的角色。

下面是浏览“galaxy.ansible.com”时打开的页面,也可以说是“Ansible Galaxy”网站的主页。 我们可以单击主页上的任何热门类别或单击“搜索”按钮以获取更多过滤器以应用精细搜索。

ansible-galaxy

例如,如果您正在寻找 MySQL 服务器角色,只需搜索它并单击过滤器按钮。 你可以看到geerlingguy的下载量最大; 我们可以尝试安装这个角色。 点击geerlingguy MySQL。

ansible-galaxy-mysql

然后,您将获得安装命令以使用ansible-galaxy安装此角色。

ansible-galaxy-install-mysql

运行上述快照中提到的命令,在您的机器上下载并安装 MySQL 服务器角色。

 ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy install geerlingguy.mysql 
ansible-galaxy-安装

如果您已经知道任何特定作者要搜索哪个角色,则可以使用如下所示的搜索命令。

 ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy search elasticsearch --author geerlingguy 
ansible-galaxy-search

常见的 Ansible Galaxy 命令

ansible-galaxy 命令使用galaxy.ansible.com 管理角色和集合。 以下是每个系统管理员不时使用的一些非常有用ansible-galaxy命令:

  • ansible-galaxy list:这个galaxy命令显示所有已安装角色的列表,以及它们的版本号。
  • ansible-galaxy remove: 这个galaxy 命令删除系统上已安装的角色。
  • ansible-galaxy info:这个galaxy 命令将提供有关Ansible Galaxy 的详细信息。
  • ansible-galaxy init 该galaxy 命令可用于创建适合提交到Ansible Galaxy 的角色模板。
  • ansible-galaxy import 这个galaxy命令需要登录才能从galaxy官方网站导入角色。

上述命令(init、import、install、remove)可以与ansible-galaxy集合命令一起使用,以使用 Ansible galaxy 管理集合。

现在让我们谈谈 Ansible Galaxy 中的角色和集合。

使用 Ansible Galaxy 创建角色

Ansible Galaxy 基本上是一个用于 Ansible 角色的大型公共存储库。 角色带有解释用法和变量的READMEs 。 Galaxy 拥有许多不断发展和壮大的角色。

Galaxy 可以使用 git 添加 GitHub 等角色源。 Ansible Galaxy 允许我们使用 ansible ansible-galaxy命令创建 Ansible 角色。 ansible-galaxy init 可以用来初始化一个新的galaxy角色,也可以使用ansible-galaxy install <name of role>命令来安装角色。

必须先下载角色,然后才能在剧本中使用它们。 一旦将它们放置在默认目录/etc/ansible/roles ,您就可以找到角色示例。

Ansible 角色结构及其意义

以下是安装角色时创建的文件和目录:

  • README.md 是描述角色的自述文件。 自述文件包含有关输入参数和示例yml的所有详细信息。
  • 任务 – 所有任务都可以由任务中的角色登记。 Role 的入口点是 Main.yml。 这是执行开始的地方。 该文件可以包含其他文件。
  • 处理程序 - 此类别包括可用于此角色或任何其他角色的处理程序。
  • defaults – 角色的默认变量。
  • vars – 比 Role 默认值更重要的变量。
  • 文件——这些文件可以使用角色进行部署。
  • 模板 – 本部分包含可通过角色使用的模板。
  • meta – 元数据可用于定义 meta 中的角色。 此文件还应包括任何角色依赖项。
  • 测试——要执行的 CI 测试。
  • 库——在角色中嵌入模块或插件。 不是由 init 命令创建的。 您还可以在此文件夹中使用 Python 创建自定义模块,然后在您的任务中使用它。

使用 Ansible Galaxy 创建集合

Ansible Galaxy 是管理角色的最佳工具,已使用多年。 但是,您将看到 Ansible Galaxy 中的新功能或更改。 Ansible 2.2.8 版现在包含收集功能。

Ansible 内容可以使用集合来分发。 它们用于打包和分发剧本和角色、模块以及插件。

以下结构是集合的基础:

 收藏/
├── 文档/
├── 星系.yml
├── 插件/
│ ├──
模块/
│ │ └── module1.py
│ ├──
存货/
│ └── .../
├── README.md
├── 角色/
│ ├──
角色1/
│ ├──
角色2/
│ └── .../
├── 剧本/
│ ├──
文件/
│ ├──
变量/
│ ├──
模板/
│ └── 任务/
└── 测试/

创建集合骨架

要在您的计算机上安装集合,您可以使用 ansible-galaxy 集合安装命令。

值得注意的是,一些子命令也可以与 ansible galaxy 一起使用。

  • init : 基于 Ansible'sle 的默认模板或您自己的模板创建一个基本的集合结构
  • build :创建可以上传到 Galaxy 或您自己的存储库的集合工件
  • publish : Galaxy 发布一个内置的集合工件
  • install : 安装一个或多个集合

结论

Ansible Galaxy 是组织和思考不断增长的角色书籍的好方法。 Ansible Galaxy 拥有大约 39K 社区作者、30K 角色和 1656 个集合,可用于快速启动我们的自动化项目。 开发者指南和贡献者指南解释了如何为现有的 Ansible Galaxy 代码做出贡献,这是一个开源项目。

您可能还对可以使用 Ansible 自动执行的系统管理员任务感兴趣。