第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.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:
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 に追加することもできます。
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: - alwaysPlaybook を実行します。
# ansible-playbook --ask-vault-pass rhv_infra.yml
ovirt-datacenters
Ansible ロールを使用して、mydatacenter
という名前のデータセンターを正しく作成することができました。