步骤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
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