12.4. ラベルを使用したマネージドクラスターでの実行用の AnsibleJob テンプレート設定
Red Hat Advanced Cluster Management for Kubernetes でクラスターを作成した場合、または Red Hat Advanced Cluster Management で管理するためにラベルを使用してインポートした場合には、AnsibleJob を作成してクラスターにバインドできます。
以下の手順を実行して、Ansible ジョブを作成し、Red Hat Advanced Cluster Management でまだ管理されていないクラスターを使用して設定します。
アプリケーション機能でサポートされるチャネルのいずれかで、Ansible ジョブの定義ファイルを作成します。Git チャネルのみがサポートされます。
AnsibleJobは、定義のkindの値として使用します。定義ファイルの内容は以下の例のようになります。
apiVersion: apiVersion: tower.ansible.com/v1alpha1 kind: AnsibleJob metadata: name: hive-cluster-gitrepo spec: tower_auth_secret: my-toweraccess job_template_name: my-tower-template-name extra_vars: variable1: value1 variable2: value2ファイルを prehook または posthook ディレクトリーに保存すると、配置ルールと一致するクラスター名の一覧が作成されます。クラスター名の一覧は、
extra_varsの値としてAnsibleJobkindリソースに渡すことができます。この値がAnsibleJobリソースに渡されると、Ansible ジョブで、新しいクラスター名が判別され、自動化での使用が可能になります。- Red Hat Advanced Cluster Management ハブクラスターにログインします。
Red Hat Advanced Cluster Management コンソールを使用して、先程作成した定義ファイルの保存先のチャネルを参照する Git サブスクリプションでアプリケーションを作成します。アプリケーションおよびサブスクリプションの作成に関する詳細は、「アプリケーションリソースの管理」を参照してください。
サブスクリプションの作成時に、ラベルを指定して、クラスターとこのサブスクリプションを連携させるために作成またはインポートするクラスターに追加できます。このラベルは、
vendor=OpenShiftなどの既存のものでも、一意のラベルを作成、定義することも可能です。注記: すでに使用中のラベルを選択すると、Ansible ジョブは自動的に実行されます。prehook または posthook の一部ではないアプリケーションに、リソースを追加することがベストプラクティスです。
デフォルトの配置ルールでは、
AnsibleJobのラベルと一致するラベルの付いたクラスターが検出されると、ジョブが実行されます。ハブクラスターが管理する実行中のクラスターすべてで、自動化を実行するには、以下の内容を配置ルールに追加します。clusterConditions: - type: ManagedClusterConditionAvailable status: "True"これを配置ルールの YAML コンテンツに貼り付けるか、Red Hat Advanced Cluster Management コンソールの Application create ページで Deploy to all online cluster and local cluster オプションを選択します。
「クラスターの作成」または「ハブクラスターへのターゲットのマネージドクラスターのインポート」の手順にしたがって、クラスターを作成またはインポートします。
クラスターの作成またはインポート時には、サブスクリプションの作成時に使用したラベルと同じラベルを使用すると、
AnsibleJobはクラスター上で自動的に実行されるように設定されます。
Red Hat Advanced Cluster Management は、クラスター名を AnsibleJob.extra_vars.target_clusters パスに自動的に挿入します。クラスター名を定義に動的に挿入できます。以下の手順を実行して、AnsibleJob を作成し、Red Hat Advanced Cluster Management で管理しているクラスターを使用して設定します。
Git チャネルの prehook または posthook ディレクトリーに、AnsibleJob の定義ファイルを作成します。
AnsibleJobは、定義のkindの値として使用します。定義ファイルの内容は以下の例のようになります。
apiVersion: tower.ansible.com/v1alpha1 kind: AnsibleJob metadata: name: hive-cluster-gitrepo spec: tower_auth_secret: my-toweraccess job_template_name: my-tower-template-name extra_vars: variable1: value1 variable2: value2my-toweraccessは、Ansible Tower にアクセスするための認証シークレットに置き換えます。my-tower-template-nameは、Ansible Tower のテンプレート名に置き換えます。
Ansible ジョブが制御するクラスターが削除されるか、追加されるたびに、AnsibleJob は自動的に extra_vars.target_clusters 変数を実行して更新します。この更新により、特定の自動化でクラスター名を指定したり、クラスターのグループに自動化を適用したりできるようになりました。