第 18 章 使用 Ansible 自动化配置任务
Ansible 是一个自动化工具,用于配置系统、部署软件和执行滚动更新。Ansible 包含对 Red Hat Virtualization 的支持,Ansible 模块可用于自动执行安装后任务,如数据中心设置和配置、管理用户或虚拟机操作。
Ansible 提供了与 REST API 和 SDK 相比自动化 Red Hat Virtualization 配置的简单方法,并允许您与其他 Ansible 模块集成。有关 Red Hat Virtualization 可用的 Ansible 模块的更多信息,请参阅 Ansible 文档中的 Ovirt 模块。
Ansible Tower 是通过 Web 界面和 Ansible 的 REST API 访问的图形化启用了框架。如果您想要对 Ansible Tower 的支持,则必须具有 Ansible Tower 许可证,它不属于 Red Hat Virtualization 订阅。
Ansible 由 Red Hat Virtualization 提供。要安装 Ansible,请在 Manager 机器中运行以下命令:
# yum install ansible
有关使用 Ansible 的替代安装说明,请参阅 Ansible 文档。
要在运行 Ansible playbook 时永久提高 Manager 的详细级别,请在 /etc/ovirt-engine/engine.conf.d/
中创建配置文件,并添加以下行:
ANSIBLE_PLAYBOOK_VERBOSE_LEVEL=4
运行 systemctl restart ovirt-engine
创建该文件后,您必须重启 Manager。
18.1. Ansible 角色
有多个 Ansible 角色可用于帮助配置和管理 Red Hat Virtualization 基础架构的各个部分。Ansible 角色提供了一种方法来模块化 Ansible 代码,可将大型 playbook 划分为可被其他用户共享的较小、可重复使用的文件。
可用于 Red Hat Virtualization 的 Ansible 角色由各种内部组件分类。如需有关 Ansible 角色的更多信息,请参阅 oVirt Ansible Roles 文档。有关使用 Ansible 角色安装的文档,请参阅 第 18.1.1 节 “安装 Ansible 角色”。
18.1.1. 安装 Ansible 角色
您可以从 Red Hat Virtualization Manager 仓库为 Red Hat Virtualization 安装 Ansible 角色。使用以下命令在 Manager 机器上安装 Ansible 角色:
# yum install ovirt-ansible-roles
默认情况下,角色安装到 /usr/share/ansible/roles 中。ovirt-ansible-roles
软件包的结构如下:
- /usr/share/ansible/roles - 存储角色。
- /usr/share/doc/ovirt-ansible-roles/ - 存储示例、基本概述和 licence。
- /usr/share/doc/ansible/roles/role_name - 存储特定于该角色的文档。
18.1.2. 使用 Ansible 角色配置 Red Hat Virtualization
以下流程指导您创建并运行使用 Ansible 角色配置 Red Hat Virtualization 的 playbook。本例使用 Ansible 连接到本地计算机上的 Manager 并创建一个新的数据中心。
先决条件
-
确保 /etc/ansible/ansible.cfg 中的
roles_path
选项指向 Ansible 角色的位置(/usr/share/ansible/roles)。 - 确保在运行 playbook 的机器上安装了 Python SDK。
使用 Ansible 角色配置 Red Hat Virtualization
在工作目录中创建用于存储 Red Hat Virtualization Manager 用户密码的文件:
# cat passwords.yml --- engine_password: youruserpassword
加密用户密码。系统将要求您提供 Vault 密码。
# ansible-vault encrypt passwords.yml New Vault password: Confirm New Vault password:
创建存储 Manager 详情的文件,如 URL、证书位置和用户。
# cat engine_vars.yml --- engine_url: https://example.engine.redhat.com/ovirt-engine/api engine_user: admin@internal engine_cafile: /etc/pki/ovirt-engine/ca.pem
注意如果您愿意,可以直接将这些变量添加到 playbook 中。
创建 playbook。要简化这一操作,您可以在 /usr/share/doc/ovirt-ansible-roles/examples 中复制和修改示例。
# cat rhv_infra.yml --- - 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: - name: Login to RHV ovirt_auth: url: "{{ engine_url }}" 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.1 roles: - ovirt-datacenters post_tasks: - name: Logout from RHV ovirt_auth: state: absent ovirt_auth: "{{ ovirt_auth }}" tags: - always运行 playbook。
# ansible-playbook --ask-vault-pass rhv_infra.yml
您已成功使用 ovirt-datacenters
Ansible 角色创建名为 mydatacenter
s 的数据中心。