第 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

  1. 在工作目录中创建用于存储 Red Hat Virtualization Manager 用户密码的文件:

    # cat passwords.yml
      ---
    engine_password: youruserpassword
  2. 加密用户密码。系统将要求您提供 Vault 密码。

    # ansible-vault encrypt passwords.yml
    New Vault password:
    Confirm New Vault password:
  3. 创建存储 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 中。

  4. 创建 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
  5. 运行 playbook。

    # ansible-playbook --ask-vault-pass rhv_infra.yml

您已成功使用 ovirt-datacenters Ansible 角色创建名为 mydatacenter s 的数据中心。