9.3.2. 移行フックの Ansible Playbook の作成
Ansible Playbook を作成して移行フックとして使用することができます。フックは、MTC Web コンソールを使用するか、MigPlan カスタムリソース (CR) マニフェストに spec.hooks パラメーターの値を指定して移行計画に追加できます。
Ansible Playbook はフックコンテナーに設定マップとしてマウントされます。フックコンテナーは、MigPlan で指定されるクラスター、サービスアカウントおよび namespace を使用してジョブとして実行されます。フックコンテナーは指定されたサービスアカウントトークンを使用して、タスクがクラスターで実行される前に認証を必要としないようにします。
9.3.2.1. Ansible モジュール リンクのコピーリンクがクリップボードにコピーされました!
Ansible shell モジュールを使用して oc コマンドを実行できます。
shell モジュールの例
- hosts: localhost
gather_facts: false
tasks:
- name: get pod name
shell: oc get po --all-namespaces
k8s_info などの kubernetes.core モジュールを使用して Kubernetes リソースと対話できます。
k8s_facts モジュールの例
- hosts: localhost
gather_facts: false
tasks:
- name: Get pod
k8s_info:
kind: pods
api: v1
namespace: openshift-migration
name: "{{ lookup( 'env', 'HOSTNAME') }}"
register: pods
- name: Print pod name
debug:
msg: "{{ pods.resources[0].metadata.name }}"
fail モジュールを使用して、ゼロ以外の終了ステータスが正常に生成されない場合にゼロ以外の終了ステータスを生成し、フックの成功または失敗が検出されるようにします。フックはジョブとして実行され、フックの成功または失敗のステータスはジョブコンテナーの終了ステータスに基づいて表示されます。
fail モジュールの例
- hosts: localhost
gather_facts: false
tasks:
- name: Set a boolean
set_fact:
do_fail: true
- name: "fail"
fail:
msg: "Cause a failure"
when: do_fail