网站搜索

如何在 Ansible Galaxy 上创建和下载角色并使用它们 - 第 9 部分


在 Ansible 系列的第 9 部分中,您将学习如何在 Ansible Galaxy 上创建和下载角色并使用它们。 Ansible 是一种简单而有效的配置管理和自动部署工具,可以高效地无缝地自动执行复杂的任务。您可以使用单个 playbook 文件从单个控制节点管理数百甚至数千台服务器。

然而,编写用于在不同环境中管理相同服务的剧本可能非常麻烦,并且这通常会导致代码冗余。此外,更多的复杂性会增加管理所有设备的难度。

角色登场。在 Ansible 中,角色用于将 playbook 分解为可重用的文件,这些文件可以在需要执行类似任务的多个其他实例中使用。这消除了一遍又一遍地重写剧本的需要,并节省了大量的时间和精力。

角色只是剧本的功能。角色附带了几乎构成剧本的内容:任务、文件、模块、变量和模板。另请注意,每个角色仅限于特定任务或所需的输出。

创建 Ansible 角色

要在 Ansible 中创建角色,只需使用语法即可。

ansible-galaxy init role_name 

将在您当前的工作目录中创建多个目录和文件。在本例中,我决定在 /etc/ansible/roles 目录中创建一个角色。

让我们创建一个名为 apache 的角色。

ansible-galaxy init apache

使用tree命令可以一览角色的目录结构。

tree apache

正如您所看到的,已经创建了多个目录,但是,并非所有目录都将在剧本中使用。

现在,要在 playbook 中使用新创建的角色,请在新角色的任务目录中包含的 main.yml 文件中定义一个任务。

/apache/tasks/main.yml

---

- hosts: database_servers

  tasks:

    - name: Install Apache2 on Ubuntu webserver
      apt:
         name: apache2
         state: installed

然后,创建一个 playbook 文件并调用角色,如图所示。

--- 
- hosts: webservers
  roles:
   - apache

从 Ansible Galaxy 安装角色

角色在使用 Ansible Galaxy 平台与 Ansible 社区中的其他用户共享代码方面发挥着至关重要的作用。在 Ansible Galaxy 中,您有数千个角色执行不同的任务,例如安装 Web 服务器和数据库、监控工具等。

Ansible Galaxy 是 Ansible 角色的数据库或存储库,您可以在剧本中利用它并帮助简化您的任务。

要在 Ansible Galaxy 中搜索角色,只需运行命令即可。

ansible-galaxy search <role>

例如,要搜索名为 mysql 运行的角色。

ansible-galaxy search mysql

正如您所看到的,有数百个角色与搜索关键字 mysql 匹配。但是,并非所有角色都会执行您想要的操作,因此建议您仔细阅读说明。

要收集有关角色的更多信息,只需运行 Ansible 命令:

ansible-galaxy info 5KYDEV0P5.skydevops-mysql

在我们的示例中,我们将安装角色 5KYDEV0P5.skydevops-mysql

ansible-galaxy install 5KYDEV0P5.skydevops-mysql

该角色将被下载并解压到位于 /etc/ansible/roles 的默认角色目录中。

此后可以在剧本中调用该角色,例如:

---
- name: Install MySQL server
  hosts: webservers

 roles:
    • 5KYDEV0P5.skydevops-mysql

现在您可以安全地运行 Ansible playbook,如图所示。

ansible-playbook install_mysql.yml

此外,您可以通过 Web 浏览器访问 Ansible Galaxy,并手动搜索角色以执行仪表板概述的各种任务。

例如,要搜索 elasticsearch 等监控角色,请单击“监控”选项并搜索如图所示的角色。

Ansible Galaxy 通过列出最受欢迎和下载最多的角色,让用户更轻松地安装最佳角色。要获取有关特定角色的更多信息,只需单击它即可。

例如,在一本剧本中,您还可以指定多个角色。

---
- name: Install MySQL server
  hosts: webservers

 roles:
    • 5KYDEV0P5.skydevops-mysql
    • Aaronpederson.mariadb

要列出已安装的角色,只需运行即可。

ansible-galaxy list

结论

角色使重用和共享 Ansible playbook 变得非常容易。通过这种方式,他们可以为用户节省大量时间来编写大量冗余代码,并花费太多本来可以用于其他系统管理任务的时间。这就是本指南的内容。