3.5. 使用 Ansible 自动化配置任务
Ansible 是一个自动化工具,用于配置系统、部署软件和执行滚动更新。Red Hat Virtualization 包括了一个有限的 Ansible 版本,可自动执行 RHV 安装后的任务,如数据中心设置和配置、管理用户和虚拟机操作。
与 REST API 和 SDK 相比,Ansible 提供了更简单的方法自动化 Red Hat Virtualization 配置,并可与其他 Ansible 模块集成。有关 Red Hat Virtualization 可用 Ansible 模块的更多信息,请参阅 Red Hat Ansible Automation Hub 文档中的 oVirt Ansible Collection。
Ansible Tower 是通过 Web 界面和 Ansible 的 REST API 访问的图形化启用了框架。如果您想要对 Ansible Tower 的支持,则必须具有 Ansible Tower 许可证,它不属于 Red Hat Virtualization 订阅。
有关使用 Ansible 的替代安装说明,请参阅 Ansible 文档。
3.5.1. oVirt Ansible Collection
oVirt Ansible Collection 提供了用于管理 Red Hat Virtualization 基础架构的各个部分的模块、角色和插件。模块用于 Ansible 和 Red Hat Virtualization Manager 之间的通信。Ansible 角色提供了一种方法来模块化 Ansible 代码,可将大型 playbook 划分为可被其他用户共享的较小可重复使用的文件。有关 oVirt Ansible Collection 的更多信息,请参阅 Automation Hub 文档。
3.5.1.1. 从 RPM 软件包安装 oVirt Ansible Collection
您可以从 Red Hat Virtualization Manager 仓库安装 oVirt Ansible Collection for Red Hat Virtualization。
前提条件
要安装 oVirt Ansible Collection,您必须订阅以下订阅频道之一:
- 使用 Red Hat Virtualization 订阅 - rhv-4.4-manager-for-rhel-8-x86_64-rpms
- 使用任何 Red Hat Enterprise Linux 订阅 - rhv-4-tools-for-rhel-8-x86_64-rpms
流程
运行以下命令,在 Manager 机器上安装 oVirt Ansible Collection :
# dnf install ovirt-ansible-collection
默认情况下,集合会被安装到:
/usr/share/ansible/collections/ansible_collections/redhat/rhv.
ovirt-ansible-collection
软件包的结构如下:/usr/share/ansible/collections/ansible_collections/redhat/rhv/usr/share/doc/ovirt-ansible-collection/
3.5.1.2. 从 Automation Hub 安装 oVirt Ansible Collection
Automation Hub 是一个新的位置,可用于安装 oVirt Ansible Collection。要配置环境,请按照 oVirt Ansible Collection 文档 中的说明操作。
流程
安装集合
# ansible-galaxy collection install redhat.rhv
Automation Hub 目前没有安装 RPM 依赖项。请确定您在执行 playbook 的主机上有这些软件包:
-
python3-ovirt-engine-sdk4
-
python3-netaddr
-
python3-jmespath
-
python3-passlib
-
3.5.1.3. 使用 oVirt Ansible Collection 配置 Red Hat Virtualization
以下流程指导您创建并运行使用 oVirt Ansible Collection 配置 Red Hat Virtualization 的 playbook。本例使用 Ansible 连接到本地计算机上的 Manager 并创建一个新的数据中心。
前提条件
- 确保在运行 playbook 的机器上安装了 Python SDK。
流程
创建 playbook。
- name: RHV infrastructure hosts: localhost connection: local gather_facts: false vars_files: # Contains variables to connect to the Manager - engine_vars.yml # Contains encrypted engine_password variable using ansible-vault - passwords.yml pre_tasks: # The use of redhat.rhv before ovirt_auth is to check if oVirt Ansible Collection is correctly loaded - name: Login to RHV redhat.rhv.ovirt_auth: hostname: "{{ engine_fqdn }}" username: "{{ engine_user }}" password: "{{ engine_password }}" ca_file: "{{ engine_cafile | default(omit) }}" insecure: "{{ engine_insecure | default(true) }}" tags: - always vars: data_center_name: mydatacenter data_center_description: mydatacenter data_center_local: false compatibility_version: 4.4 roles: - infra collections: - redhat.rhv post_tasks: - name: Logout from RHV ovirt_auth: state: absent ovirt_auth: "{{ ovirt_auth }}" tags: - always
您已成功使用 oVirt Ansible Collection 的 infra
Ansible 角色来创建名为 mydatacenter
的数据中心。