第18章 Ansible を使用した設定タスクの自動化

Ansible は、システムの設定、ソフトウェアのデプロイ、ローリング更新の実行に使用する自動化ツールです。Ansible には Red Hat Virtualization のサポートが含まれ、Ansible モジュールを使用することで、データセンターの設定夜行性、ユーザーの管理、仮想マシン操作などのインストール後のタスクを自動化できます。

Ansible は、REST API や SDK と比較して、Red Hat Virtualization 設定を自動化する簡単な方法を提供し、他の Ansible モジュールと統合できます。Red Hat Virtualization で利用可能な Ansible モジュールの詳細は、Ansible ドキュメントの Ovirt モジュール を参照してください。

注記

Ansible Tower は、Ansible の Web インターフェイスと REST API を介してアクセスできるグラフィカルに有効化されたフレームワークです。Ansible Tower のサポートが必要な場合は、Red Hat Virtualization サブスクリプションの一部ではない Ansible Tower ライセンスが必要です。

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

ファイルの作成後に Manager を再起動するには、systemctl restart ovirt-engine を実行します。

18.1. Ansible ロール

Red Hat Virtualization インフラストラクチャーのさまざまな部分を設定して管理するために、複数の Ansible ロールを使用できます。Ansible のロールは、大きな Playbook を他のユーザーと共有できる小さな再利用可能なファイルに分割することで、Ansible コードをモジュール化する方法を提供します。

Red Hat Virtualization で利用可能な Ansible ロールは、さまざまなインフラストラクチャーコンポーネントによって分類されます。Ansible ロールの詳細は、oVirt Ansible Roles のドキュメントを参照してください。Ansible ロールでインストールされるドキュメントは、「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/: 例、基本の概要、およびライセンスを保存します。
  • /usr/share/doc/ansible/roles/role_name: ロール固有のドキュメントを保存します。

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

次の手順では、Ansible ロールを使用して Red Hat Virtualization を設定する Playbook を作成および実行する方法について説明します。この例では、Ansible を使用してローカルマシンのマネージャーに接続し、新しいデータセンターを作成します。

前提条件

  • /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 という名前のデータセンターを作成できました。