步骤4. 创建 /defaults/main.yml

在此文件中,我们将添加一些要在此角色中使用的默认变量,在我们的示例中,我们创建了 3 个默认变量:EPEL 存储库 URL、GPG KEY URL 和存储库文件路径。

[jack@onitroad ~]$vi roles/epel-repository/defaults/main.yml
--
epel_repo_url: "https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm"
epel_repo_gpg_key_url: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}"
epel_repofile_path: "/etc/yum.repos.d/epel.repo"

步骤1. 创建角色的基本结构

要做的第一步是创建角色的基本结构,我们应该创建以下所有目录布局。

[jack@onitroad ~]$tree
.
├── inventory.ini
├── role-repo.yml
├── roles
│   ├── epel-repository
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   └── tasks
│   │       └── main.yml

4 directories, 5 files
如何在 CentOS 7 /RHEL 7 上使用 Ansible 安装 EPEL 存储库

Ansible for devops 是一个类似于 Chef、Puppet 的 IT 配置管理、部署和编排的开源工具,非常简单易用,因为它使用 SSH 连接到服务器并运行配置的任务,而不是使用代理。

在本教程中,我们将介绍如何使用 playbook 在远程主机上安装带有 Ansible 的 EPEL 存储库。

步骤6. 创建 role-repo.yml Playbook

在与角色目录相同的目录中,我们必须创建一个新的 yaml 文件,我们将其中定义主机、要连接的远程用户以及要执行的角色的目录名称。

[jack@onitroad ~]$vi role-repo.yml
--
- hosts: all
  sudo: yes
  gather_facts: yes #IMPORTANT
  remote_user: root
  roles:
    - epel-repository

步骤2. 创建库存文件

在此文件中指定要由 Ansible 管理的主机列表

[jack@onitroad ~]# vi inventory.ini
[webservers]
web01
web02
web03
web04
web05

[dbservers]
db01
db02
db03

步骤5. 创建 /tasks/main.yml

在这个文件中,我们将添加待办事项:
-首先,我们必须验证是否安装了 EPEL Repository 并注册结果。

  • 其次,如果未安装 EPEL 存储库,我们将使用 EPEL 存储库 URL 安装 EPEL 存储库。

  • 最后,我们必须导入 EPEL GPG 密钥。

[jack@onitroad ~]$vi roles/epel-repository/tasks/main.yml
--
- name: 1.Check if EPEL repo is already configured.
  stat: path={{ epel_repofile_path }}
  register: epel_repofile_result

- name: 2.Install EPEL repo.
  yum:
    name: "{{ epel_repo_url }}"
    state: present
  register: result
  when: not epel_repofile_result.stat.exists

- name: 3.Import EPEL GPG key.
  rpm_key:
    key: "{{ epel_repo_gpg_key_url }}"
    state: present
  when: not epel_repofile_result.stat.exists

步骤3. 创建 /meta/main.yml

meta/main.yml 是我们可以提供描述、支持的平台列表和任何依赖项的文件。
在我们的例子中,我们没有任何角色依赖,但是文件应该是这样的:

[jack@onitroad ~]$vi roles/epel-repository/meta/main.yml
--
dependencies: []

步骤7. 运行角色

让我们做一个语法检查,我们应该在运行角色之前运行它:

[jack@onitroad ~]$ansible-playbook -i inventory.ini role-repo.yml --syntax-check

最后,我们可以使用以下命令运行角色

[jack@onitroad ~]$ansible-playbook -i inventory.ini role-repo.yml --ask-pass

这里注意,会提示输入root用户的ssh密码

日期:2020-06-02 22:18:59 来源:oir作者:oir