Ansible Galaxy:你需要知道的一切

Ansible是一款流行的开源配置管理工具。另一方面,Ansible Galaxy是一个Ansible角色的仓库。

作为初学者系统管理员,您可能只有一些playbook。随着您的自动化技能的提高和对Ansible的熟悉,您将学习所有最佳实践。随着playbook的增加,您也将意识到Ansible Galaxy的重要性。

什么是Ansible Galaxy?

Ansible Galaxy是一个基于web的开源在线存储库,用于存储Ansible内容(主要是角色和集合)。这就像您创建了一些新内容并希望与他人分享一样。

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

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

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

Ansible概述

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

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

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

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

在Ansible Galaxy上工作

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

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

ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy

首先,您可以使用init命令创建一个角色。这里我创建了一个名为“testing”的角色。使用ls命令检查角色是否成功创建。init命令还会在testing角色目录内创建必要的文件。

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

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

以下是在浏览‘galaxy.ansible.com‘时将打开的页面,或者我们可以说这是‘Ansible Galaxy’网站的主页。我们可以从主页上点击任何热门类别,或者点击‘搜索’按钮以获得更多筛选器来进行细致搜索。

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

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

运行上面快照中提到的命令,以在您的计算机上下载和安装MySQL服务器角色。

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

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

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

常用的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 collection命令一起使用,以使用Ansible Galaxy管理集合。

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

使用Ansible Galaxy创建角色

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

Galaxy可以使用git添加角色源代码,例如GitHub。Ansible Galaxy允许我们使用ansible-galaxy命令创建Ansible角色。可以使用ansible-galaxy init来初始化一个新的galaxy角色,或者可以使用ansible-galaxy install 命令来安装角色。

在您可以在playbooks中使用它们之前,必须下载该角色。一旦它们被放置在默认目录/etc/ansible/roles中,您可以找到角色示例。

Ansible角色结构及其重要性

在安装角色时创建的文件和目录如下:

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

使用Ansible Galaxy创建集合

Ansible Galaxy是管理角色的最佳工具,并且已经使用了多年。但是,您将看到Ansible Galaxy的新功能或更改。Ansible版本2.2.8现在包括集合功能。

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

以下结构是集合的基础:

collection/
├── docs/
├── galaxy.yml
├── plugins/
│ ├── modules/
│ │ └── module1.py
│ ├── inventory/
│ └── .../
├── README.md
├── roles/
│ ├── role1/
│ ├── role2/
│ └── .../
├── playbooks/
│ ├── files/
│ ├── vars/
│ ├── templates/
│ └── tasks/
└── tests/

创建集合骨架

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

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

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

结论

Ansible Galaxy是组织和思考不断增长的角色库的绝佳方式。Ansible Galaxy约有39K个社区作者,30K个角色和1656个集合,可以快速启动我们的自动化项目。开发者指南和贡献者指南介绍了如何贡献到现有的Ansible Galaxy代码,这是一个开源项目。

您可能还对Sysadmin tasks you can automate with Ansible感兴趣。

类似文章