Red Hat Training

A Red Hat training course is available for Red Hat Virtualization

第14章 Ansible を使用した設定作業の自動化

Ansible は、システムの設定、ソフトウェアのデプロイ、およびローリングアップデートの実行に使用する自動化ツールです。Ansible には Red Hat Virtualization のサポートが含まれ、Ansible のモジュールを使用してインストール後の作業 (データセンターのセットアップおよび設定、ユーザーの管理、または仮想マシンの操作) を自動化することができます。

REST API および SDK を用いた場合と比較して、Ansible による Red Hat Virtualization 設定の自動化は容易で、他の Ansible モジュールと統合することができます。Red Hat Virtualization に利用可能な Ansible モジュールの詳細については、Ansible のドキュメントの Ovirt modules を参照してください。

注記

Ansible Tower は、Ansible の Web インターフェースおよび REST API エンドポイントからアクセスできるグラフィック対応のフレームワークです。Ansible Tower に対するサポートを受けるには、Ansible Tower のライセンスが必要です (Red Hat Virtualization のサブスクリプションには含まれていません)。

Ansible は Red Hat Virtualization に同梱されています。Ansible をインストールするには、必要なリポジトリーを有効にする必要があります。『インストールガイド』「Red Hat Virtualization 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 を再起動する必要があります。

14.1. Ansible ロール

Red Hat Virtualization インフラストラクチャーのさまざまな要素の設定および管理に役立つ Ansible ロールが、複数用意されています。Ansible ロールにより、大規模な Playbook を他のユーザーと共有できる小規模で再利用可能なファイルに分割して、Ansible コードをモジュール化することができます。

Red Hat Virtualization で利用可能な Ansible ロールは、さまざまなインフラストラクチャーコンポーネントごとにカテゴリー分けされます。Ansible ロールの詳細については、「oVirt Ansible Roles」のドキュメントを参照してください。Ansible ロールと共にインストールされるドキュメントについては、「Ansible ロールのインストール」を参照してください。

14.1.1. Ansible ロールのインストール

Red Hat Virtualization 用の Ansible ロールは、「rhel-7-server-rhv-4.2-manager-rpms」リポジトリーからインストールすることができます。詳細については、『インストールガイド』「Red Hat Virtualization Manager リポジトリーの有効化」を参照してください。

以下のコマンドを使用して Ansible ロールをインストールします。

# yum install ovirt-ansible-roles

デフォルトでは、ロールは /usr/share/ansible/roles にインストールされます。ovirt-ansible-roles パッケージの構成は以下のとおりです。

  • /usr/share/ansible/roles: ロールを保管
  • /usr/share/doc/ovirt-ansible-roles/: サンプル、基本概要、およびライセンスを保管
  • /usr/share/doc/ansible/roles/role_name: ロールに固有のドキュメントを保管

14.1.2. Ansible ロールを使用した Red Hat Virtualization の設定

以下の手順で、Ansible ロールを使用した Playbook の作成/実行から Red Hat Virtualization 設定までの一連のプロセスを説明します。以下の例では、Ansible を使用してローカルマシン上の Manager に接続し、新規データセンターを作成します。

前提条件

  • /etc/ansible/ansible.cfgroles_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. URL、証明書の場所、ユーザー等の Manager に関する情報を保管するファイルを作成します。

    # 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 という名前のデータセンターを正しく作成することができました。