3.4. 必要な Ansible Playbook の作成
Ansible は、障害復旧フェイルオーバーとフェイルバックの開始および管理に使用されます。したがって、これを容易にするために Ansible Playbook を作成する必要があります。Ansible Playbook の作成に関する詳細は、Ansible ドキュメント を参照してください。
前提条件
- プライマリーサイトで完全に機能する Red Hat Virtualization 環境。
プライマリー環境と同じデータセンターとクラスターの互換性レベルを持つセカンダリーサイトのバックアップ環境。バックアップ環境には以下が必要です。
- Red Hat Virtualization Manager。
- 仮想マシンを実行し、レプリケートされたストレージドメインに接続できるアクティブホスト。
- クラスターのあるデータセンター。
- プライマリーサイトと同じ一般的な接続を持つネットワーク。
レプリケートされたストレージ。詳細は、ストレージに関する考慮事項 を参照してください。
注記仮想マシンとテンプレートを含むレプリケートされたストレージは、セカンダリーサイトにアタッチしないでください。
-
oVirt.disaster-recovery
パッケージが、フェイルオーバーおよびフェイルバックを自動化する高可用性 Red Hat Ansible Engine マシンにインストールされている必要があります。 - Red Hat Ansible Engine を実行しているマシンは、SSH を使用してプライマリーおよびセカンダリーサイトの Manager に接続できる必要があります。
また、アフィニティーグループ、アフィニティーラベル、ユーザーなど、プライマリーサイトに存在する環境プロパティーをセカンダリーサイトに作成することが推奨されます。
Ansible Playbook のデフォルト動作は、/usr/share/ansible/roles/oVirt.disaster-recovery/defaults/main.yml
ファイルで設定できます。
次の Playbook を作成する必要があります。
- プライマリーサイトとセカンダリーサイトのエンティティーをマップするファイルを作成する Playbook。
- フェイルオーバー Playbook。
- フェイルバック Playbook。
フェイルバックする前にプライマリーサイトをクリーンアップする Playbook もオプションで作成できます。
フェイルオーバーおよびフェイルバックを管理している Ansible マシンの /usr/share/ansible/roles/oVirt.disaster-recovery/
に Playbook と関連ファイルを作成します。それを管理できる複数の Ansible マシンがある場合は、それらすべてにファイルをコピーするようにしてください。
Testing the Active-Passive Configuration のテスト手順を 1 つ以上使用して、設定をテストできます。
3.4.1. Ansible タスク用の ovirt-dr
スクリプト
ovirt-dr
スクリプトは、次の Ansible タスクを簡素化します。
-
プライマリーサイトおよびセカンダリーサイトのフェイルオーバーおよびフェイルバック用
var
マッピングファイルの生成 -
var
マッピングファイルの検証 - ターゲットサイトでのフェイルオーバーの実行
- ターゲットサイトからソースサイトへのフェイルバックの実行
このスクリプトは、/usr/share/ansible/roles/oVirt.disaster-recovery/files
にあります。
使用方法
# ./ovirt-dr generate/validate/failover/failback [--conf-file=dr.conf] [--log-file=ovirt-dr-log_number.log] [--log-level=DEBUG/INFO/WARNING/ERROR]
スクリプトの動作のパラメーターは、設定ファイル /usr/share/ansible/roles/oVirt.disaster-recovery/files/dr.conf に設定できます。
--conf-file
オプションを使用して、設定ファイルの場所を変更できます。
--log-file
および --log-level
オプションを使用して、ログの詳細の場所とレベルを設定できます。
3.4.2. マッピングファイルを生成する Playbook の作成
マッピングファイルの生成に使用する Ansible Playbook は、ターゲット (プライマリー) サイトのエンティティーをファイルに事前入力します。次に、IP アドレス、クラスター、アフィニティーグループ、アフィニティーラベル、外部 LUN ディスク、承認ドメイン、ロール、vNIC プロファイルなどのバックアップサイトのエンティティーを、ファイルに手動で追加する必要があります。
セルフホストエンジンのストレージドメインに仮想マシンディスクがある場合は、マッピングファイルの生成に失敗します。また、フェイルオーバーしてはならないため、マッピングファイルにはこのストレージドメインの属性は含まれません。
この例では、Ansible Playbook は dr-rhv-setup.yml
という名前で、プライマリーサイトの Manager マシンで実行されます。
手順
Ansible Playbook を作成してマッピングファイルを生成します。以下に例を示します。
--- - name: Generate mapping hosts: localhost connection: local vars: site: https://example.engine.redhat.com/ovirt-engine/api username: admin@internal password: my_password ca: /etc/pki/ovirt-engine/ca.pem var_file: disaster_recovery_vars.yml roles: - oVirt.disaster-recovery
注記セキュリティーを強化するには、
.yml
ファイルで Manager パスワードを暗号化できます。詳細は、管理ガイド の Ansible ロールを使用した Red Hat Virtualization の設定 を参照してください。Ansible コマンドを実行してマッピングファイルを生成します。プライマリーサイトの設定は事前に入力されます。
# ansible-playbook dr-rhv-setup.yml --tags "generate_mapping"
-
バックアップサイトの設定を使用して、マッピングファイル (この場合は
disaster_recovery_vars.yml
) を設定します。マッピングファイルの属性に関する詳細は、Mapping File Attributes を参照してください。
フェイルオーバーおよびフェイルバックを実行できる Ansible マシンが複数ある場合は、マッピングファイルをすべての関連マシンにコピーします。
3.4.3. フェイルオーバーおよびフェイルバック Playbook の作成
作成および設定したマッピングファイル (この場合は disaster_recovery_vars.yml
) があることを確認してください。これは、Playbook に追加する必要があります。
パスワードファイル (passwords.yml
など) を定義して、プライマリーおよびセカンダリーサイトの Manager パスワードを保存できます。以下に例を示します。
--- # This file is in plain text, if you want to # encrypt this file, please execute following command: # # $ ansible-vault encrypt passwords.yml # # It will ask you for a password, which you must then pass to # ansible interactively when executing the playbook. # # $ ansible-playbook myplaybook.yml --ask-vault-pass # dr_sites_primary_password: primary_password dr_sites_secondary_password: secondary_password
セキュリティーを強化する場合は、パスワードファイルを暗号化できます。ただし、Playbook の実行時に --ask-vault-pass
パラメーターを使用する必要があります。詳細は、管理ガイド の Ansible ロールを使用した Red Hat Virtualization の設定 を参照してください。
これらの例では、フェイルオーバーおよびフェイルバックする Ansible Playbook の名前は、それぞれ dr-rhv-failover.yml
と dr-rhv-failback.yml
です。
以下の Ansible Playbook を作成して、環境のフェイルオーバーを行います。
--- - name: Failover RHV hosts: localhost connection: local vars: dr_target_host: secondary dr_source_map: primary vars_files: - disaster_recovery_vars.yml - passwords.yml roles: - oVirt.disaster-recovery
以下の Ansible Playbook を作成して、環境のフェイルバックを行います。
--- - name: Failback RHV hosts: localhost connection: local vars: dr_target_host: primary dr_source_map: secondary vars_files: - disaster_recovery_vars.yml - passwords.yml roles: - oVirt.disaster-recovery
3.4.4. プライマリーサイトをクリーンアップするための Playbook の作成
プライマリーサイトにフェイルバックする前に、インポートするすべてのストレージドメインがプライマリーサイトから削除されていることを確認する必要があります。これは、Manager で手動で行うことも、必要に応じて Ansible Playbook を作成して実行することもできます。
この例では、プライマリーサイトをクリーンアップする Ansible Playbook の名前は dr-cleanup.yml
で、別の Ansible Playbook によって生成されたマッピングファイルを使用します。
--- - name: clean RHV hosts: localhost connection: local vars: dr_source_map: primary vars_files: - disaster_recovery_vars.yml roles: - oVirt.disaster-recovery