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