Ansible 統合を使用した設定の管理
Satellite で Ansible 統合を設定し、Ansible ロールと Playbook を使用してホストを設定する
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
フィードバックを提供するには、Red Hat Jira の Create Issue フォームを使用します。Jira の問題は Red Hat Satellite Jira プロジェクトに作成され、その進捗状況を追跡できます。
前提条件
- Red Hat アカウント が登録されている。
手順
- Create Issue にアクセスします。Jira でログインエラーが表示された場合は、フォームにリダイレクトされた後、ログインして続行します。
- Summary フィールドと Description フィールドに入力します。Description フィールドに、ドキュメントの URL、章またはセクション番号、および問題の詳しい説明を入力します。フォーム内の他のフィールドは変更しないでください。
- Create をクリックします。
第1章 Satellite での Ansible の使用開始 リンクのコピーリンクがクリップボードにコピーされました!
このガイドを使用して、リモート実行に Ansible を使用するように Satellite を設定します。
1.1. サポートされている Ansible のバージョン リンクのコピーリンクがクリップボードにコピーされました!
Satellite は、Satellite Server のベースオペレーティングシステムまたはリモート実行用の Capsule によって提供される Ansible を使用します。したがって、サポートされる Ansible のバージョンは、ベース OS の設定によって異なります。
1.2. Ansible ロールを実行するための Satellite の設定 リンクのコピーリンクがクリップボードにコピーされました!
Satellite では、Ansible ロールをインポートして、ルーティンタスクの自動化に役立てることができます。Ansible は、Satellite Server でデフォルトで有効になっています。
Ansible パス
Satellite は、次のパスから Ansible ロールをインポートして実行します。
-
/etc/ansible/roles -
/usr/share/ansible/roles -
/etc/ansible/collections -
/usr/share/ansible/collections
インストールされたパッケージのロールとコレクションは、/usr/share/ansible の下に配置されます。カスタムロールまたはコレクションを追加する場合は、ロールやコレクションを /etc/ansible の下に配置します。
Red Hat は、Red Hat から取得した Ansible ロールおよびコレクションのみをサポートすることに注意してください。
パスは、Satellite によって設定されます。詳細は、「Ansible 設定のカスタマイズ」 を参照してください。
手順
- ロールを使用する場所から、Satellite Server およびすべての Capsule Server の Ansible パス 内のディレクトリーにロールを追加します。カスタムまたはサードパーティーの Ansible ロールを使用する場合には、外部のバージョン管理システムが Satellite Server と Capsule Server の間でロールを同期するように設定してください。
ホストで Ansible ロールを実行するために使用するすべての Capsule Server で、Ansible プラグインを有効にします。
satellite-installer --enable-foreman-proxy-plugin-ansible
# satellite-installer --enable-foreman-proxy-plugin-ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow - SSH 鍵を配布して、Capsule が SSH でホストに接続できるようにします。詳細は、ホストの管理 の リモート実行のための SSH 鍵の配布 を参照してください。Satellite は、リモート実行ジョブの実行と同様に、Ansible ロールを実行します。
- Ansible ロールを Satellite にインポートします。
- 2章Ansible ロールを使用したクライアント上の反復タスクの自動化 に進みます。
1.3. Ansible と Satellite の統合の有効化 リンクのコピーリンクがクリップボードにコピーされました!
Satellite Server で Ansible プラグインを有効にするには、次の手順を実行します。
手順
Satellite Server で Ansible プラグインを有効にします。
satellite-installer \ --enable-foreman-plugin-ansible \ --enable-foreman-proxy-plugin-ansible
# satellite-installer \ --enable-foreman-plugin-ansible \ --enable-foreman-proxy-plugin-ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. Ansible のロールと変数のインポート リンクのコピーリンクがクリップボードにコピーされました!
Ansible が有効になっている Satellite Server または Capsule Server の Ansible パス から、Ansible のロールと変数をインポートできます。
前提条件
- インポートするロールおよび変数が、ロールを使用するすべての Capsule の Ansible パス に配置されているようにしてください。
手順
- Satellite Web UI で、Configure > Ansible > Roles に移動します。
- Import をクリックして、インポート元の Capsule を選択します。
- インポートするロールを選択します。
- Submit をクリックします。
1.5. Satellite での Ansible 変数のオーバーライド リンクのコピーリンクがクリップボードにコピーされました!
Satellite で Ansible ロールを実行する場合、Satellite を使用して Ansible ロールの Ansible 変数をオーバーライドできます。
次の手順では、ホストとホストグループを説明します。詳細は、ホストの管理 を参照してください。
変数のオーバーライドの優先順位
Ansible ロールを使用して、Effective User 以外のユーザーとしてタスクを実行する場合、Ansible 変数をオーバーライドするための厳密な優先順位があります。オーバーライドする変数が正しい優先順位で行われるようにするには、変数の優先順位 : 変数をどこに置くべきか を 参照してください。
前提条件
- Satellite に Ansible 変数がある。詳細は、「Ansible のロールと変数のインポート」 を参照してください。
- オーバーライドされた Ansible 変数を使用するには、ホストと照合される属性を表示できるロールがユーザーに必要です。
手順
- Satellite Web UI で、Configure > Ansible > Variables に移動します。
- Satellite でオーバーライドし、管理する Ansible 変数を選択します。
- Default Behavior エリアで、Override チェックボックスを選択します。
- Parameter Type フィールドで、string や boolean などの検証用の値のタイプを選択します。配列 タイプと ハッシュ タイプには、変数の一致を処理するための追加のオプションがあります。詳細は、以下の Prioritize Attribute Order エリア を参照してください。
- デフォルト値 フィールドで、変数と一致するものがない場合に使用するデフォルト値を入力します。
- オプション: 変数の値を Satellite Web UI でプレーンテキストとして表示したくない場合は、値の非表示 のチェックボックスを選択し、変数のコンテンツをアスタリスクとして表示します。これは、パスワードやシークレットトークンなどの機密性の高い値に役立ちます。
オプション: オプションの入力バリデーター エリアをデプロイメントし、変数の具体的な値を検証するために使用される条件を指定します。
- ユーザーにこの変数への入力を強制する場合は、Required を選択します。
Validator Type フィールドで、値を検証する方法を選択します。
-
list- 値は、許可された値の列挙に対して検証されます。 -
regex- 値は正規表現パターンに対して検証されます。
-
オプション: Prioritize Attribute Order 領域では、オーバーライドをホストと一致させる優先順位をホスト属性別に指定します。上から順に優先されます。最初に一致したものが優先されます。
AND 演算としてコンマを使用して、複数の属性を 1 つのマッチャーキーにまとめることができます。たとえば、
hostgroup, environmentのマッチャーキーは、hostgroup = "web servers"およびenvironment = productionなどのマッチャーを想定します。パラメータータイプ array または hash を使用する場合は、さらに以下を設定できます。
- オーバーライドのマージ - 配列全体またはハッシュを置き換える代わりに、配列/ハッシュのメンバーをマージします。ハッシュに同じキーが含まれている場合、値はホストの値で上書きされます。
- デフォルトのマージ - デフォルト値を配列またはハッシュに追加します。
- 重複の回避 - 配列またはハッシュの値が一意であることを確認します。
- オプション: マッチャーの指定 エリアをデプロイメントし、変数がオーバーライドするホストを選択するための基準を指定します。
- オーバーライド設定を保存するには、送信 をクリックします。
Ansible 変数を使用するには、ホストまたはホストグループにパラメーターとして変数を追加するか、グローバルパラメーターとして変数を追加します。
ホストへの変数の追加
- Satellite Web UI で、Hosts > All Hosts に移動し、使用するホストを選択します。
- Ansible タブをクリックし、Variables 領域で、鉛筆アイコンをクリックして変数の値を編集します。
- チェックアイコンをクリックして変更された変数の値を受け入れるか、クロスアイコンをクリックして変更をキャンセルします。
ホストグループへの変数の追加
- Satellite Web UI で、Configure > Host Groups に移動し、使用するホストグループを選択します。
- パラメーター タブをクリックして、ホストのグループパラメーター のエリアで、パラメーターの追加 をクリックします。
- 名前 フィールドに Ansible 変数名を追加します。
- タイプ リストから検証する変数タイプを選択します。
- 値 フィールドに変数の値を入力します。
変数をグローバルパラメーターとして追加する
- Satellite Web UI で 設定 > グローバルパラメーター に移動して、パラメーターの作成 をクリックします。
- 名前 フィールドに Ansible 変数名を追加します。
- タイプ リストから検証する変数タイプを選択します。
- 値 フィールドに変数の値を入力します。
- オプション: Ansible 変数をプレーンテキストで表示したくない場合は、値の非表示 のチェックボックスを選択し、Satellite Web UI で変数のコンテンツをアスタリスクとして表示します。
1.6. Red Hat Enterprise Linux システムロールの追加 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux システムロールは、Red Hat Enterprise Linux サーバーをリモートで管理するための設定インターフェイスです。Red Hat Enterprise Linux システムロールを利用すると、Satellite に Ansible ロールを追加できます。Satellite で Ansible ロールを使用すると、設定がより速くかつ容易に実行できます。
一部の Red Hat Enterprise Linux システムロールのサポートレベルは、テクノロジープレビューにある場合があります。Red Hat Enterprise Linux システムロールに関するサポートレベルの最新情報および一般情報は、Red Hat Enterprise Linux システムロール を参照してください。
Extras チャンネルに登録する前に、Red Hat Enterprise Linux Extras の製品ライフサイクル の記事を参照してください。
手順
次のリポジトリーが有効になっていることを確認します。
Red Hat Enterprise Linux 8 で、Appstream リポジトリーが有効になっていることを確認します。
subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms
# subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow アーキテクチャー用に指定された Appstream リポジトリーを有効にする必要があります。詳細は、RHEL 8 リポジトリー を参照してください。
Red Hat Enterprise Linux 7 では、Extras リポジトリーが有効になっていることを確認します。
subscription-manager repos --enable=rhel-7-server-extras-rpms
# subscription-manager repos --enable=rhel-7-server-extras-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
rhel-system-rolesパッケージをインストールします。satellite-maintain packages install rhel-system-roles
# satellite-maintain packages install rhel-system-rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow rhel-system-rolesパッケージは/usr/share/ansible/roles/にダウンロードされます。インポート前にファイルを表示して修正を加えることができます。- Satellite Web UI で、Configure > Ansible > Roles に移動します。
- インポートするロールが含まれている Capsule をクリックします。
- Ansible ロールリストからインポートするロールのチェックボックスを選択してから、更新 をクリックします。
これで Ansible ロールをホストまたはホストグループに割り当てることができます。詳細は、「既存ホストへの Ansible ロールの割り当て」 を参照してください。
また、ロール内に含まれているモジュールを Ansible のジョブテンプレートに追加すると、それらを Ansible playbooks にも追加することもできます。ジョブテンプレートには hosts:all 行を含める必要があります。詳細は、Red Hat Enterprise Linux (RHEL) System Roles を参照してください。
1.7. Ansible コレクションの同期 リンクのコピーリンクがクリップボードにコピーされました!
Satellite では、Private Automation Hub、console.redhat.com、およびその他の Satellite インスタンスからの Ansible コレクションを同期できます。同期後、Ansible コレクションは、Satellite Web UI メニューの Content の下に新しいリポジトリータイプとして Satellite に表示されます。
手順
- Satellite Web UI で、Content > Products に移動します。
- 必要な製品名を選択します。
- 製品 ウィンドウで、リポジトリーを作成する製品の名前を選択します。
- リポジトリー タブをクリックして、新規リポジトリー をクリックします。
Name フィールドに、リポジトリーの名前を入力します。
ラベル フィールドには、名前に基づいて自動的に入力されます。
- タイプ リストから、ansible コレクション を選択します。
アップストリーム URL フィールドに、アップストリームコレクションリポジトリーの URL を入力します。
URL には、任意の Ansible Galaxy エンドポイントを指定できます。例:
https://console.redhat.com/api/automation-hub/オプション: Requirements.yml フィールドで、エンドポイントから同期するコレクションのリストとそのバージョンを指定できます。
コレクションのリストを指定しない場合は、エンドポイントのすべてが同期されます。
--- collections: - name: my_namespace.my_collection version: 1.2.3
--- collections: - name: my_namespace.my_collection version: 1.2.3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は、Galaxy ユーザーガイド の Installing roles and collections from the same requirements.yml file を参照してください。
認証します。
Private Automation Hub から Satellite を同期するには、Auth Token フィールドにトークンを入力します。
詳細は、Connect to Hub ガイドの Connect Private Automation Hub を参照してください。
console.redhat.comから Satellite を同期するには、Auth Token フィールドにトークンを入力し、Auth URL フィールドに SSO URL を入力します。詳細は、Automation Hub の概要 を参照してください。
- Satellite から Satellite を同期するには、両方の認証フィールドを空白のままにします。
- Save をクリックします。
- Ansible Collections リポジトリーに移動します。
- アクションの選択 メニューから 同期開始 を選択します。
1.8. Ansible 設定のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
Satellite は、Satellite との Ansible 統合に必要な Ansible 設定 (必須) を管理します。ただし、他の Ansible 設定オプションは通常どおりカスタマイズできます。
Satellite は、必須の Ansible 設定を環境変数として /etc/foreman-proxy/ansible.env に保存します。このファイルは satellite-installer によって管理されます。
Ansible は、設定ファイルと Capsule によって提供される環境から設定を読み取ります。Ansible 設定をカスタマイズする必要がある場合は、システム全体の /etc/ansible/ansible.cfg ファイルか、foreman-proxy ユーザーのホームディレクトリーにある /usr/share/foreman-proxy/.ansible.cfg ファイルでカスタマイズできます。/usr/share/foreman-proxy/.ansible.cfg を使用する場合、Satellite によって生成された Ansible は /etc/ansible/ansible.cfg の設定を無視することに注意してください。
環境変数は ansible.cfg の値よりも優先されるので、Satellite に必要な基本的な設定が確実に保持される点に注意してください。
次の表は、Satellite によって管理される基本的な Ansible 設定オプションを示しています。
| Environment Variable | 設定キー | 説明 |
|---|---|---|
| ANSIBLE_CALLBACKS_ENABLED | callbacks_enabled |
Satellite へのコールバックを有効にします。バージョン間の互換性を確保する |
| ANSIBLE_CALLBACK_WHITELIST | callback_whitelist |
Satellite へのコールバックを有効にします。バージョン間の互換性を確保する |
| ANSIBLE_COLLECTIONS_PATHS | collections_paths | Ansible コレクションへのパスのリスト |
| ANSIBLE_HOST_KEY_CHECKING | host_key_checking | SSH 接続中のホストキーのチェックを無効にします。 |
| ANSIBLE_LOCAL_TEMP | local_tmp | Capsule 上の一時ディレクトリー |
| ANSIBLE_ROLES_PATH | roles_path | Ansible ロールへのパスのリスト |
| ANSIBLE_SSH_ARGS | ssh_args | SSH 接続に渡される引数 |
関連情報
1.9. Satellite での Ansible Vault の使用 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Vault ツールを使用して機密性の高い Ansible データファイルを暗号化し、ファイルに保存されているパスワードを使用して暗号化されたファイルにアクセスするように Ansible を設定できます。
手順
-
/etc/ansible/ansible.cfgをカスタマイズした場合は、設定を/etc/ansible/ansible.cfgから/usr/share/foreman-proxy/.ansible.cfgにコピーします。 ansible-vaultコマンドを使用して機密ファイルを暗号化します。ansible-vault encrypt /etc/ansible/roles/Role_Name/vars/main.yml
# ansible-vault encrypt /etc/ansible/roles/Role_Name/vars/main.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vaultは、ファイルのアクセス許可を600に変更することに注意してください。暗号化されたファイルのグループと権限を変更して、
foreman-proxyユーザーが確実に読み取れるようにします。chgrp foreman-proxy /etc/ansible/roles/Role_Name/vars/main.yml chmod 0640 /etc/ansible/roles/Role_Name/vars/main.yml
# chgrp foreman-proxy /etc/ansible/roles/Role_Name/vars/main.yml # chmod 0640 /etc/ansible/roles/Role_Name/vars/main.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
/usr/share/foreman-proxy/.ansible_vault_passwordファイルを作成し、そのファイルに Vault パスワードを入力します。 .ansible_vault_passwordファイルのユーザーと権限を変更して、foreman-proxyユーザーのみがファイルを読み取れるようにします。chown foreman-proxy:foreman-proxy /usr/share/foreman-proxy/.ansible_vault_password chmod 0400 /usr/share/foreman-proxy/.ansible_vault_password
# chown foreman-proxy:foreman-proxy /usr/share/foreman-proxy/.ansible_vault_password # chmod 0400 /usr/share/foreman-proxy/.ansible_vault_passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vault パスワードファイルのパスを
/usr/share/foreman-proxy/.ansible.cfgの[defaults]セクションに追加します。[defaults] vault_password_file = /usr/share/foreman-proxy/.ansible_vault_password
[defaults] vault_password_file = /usr/share/foreman-proxy/.ansible_vault_passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vault パスワードファイルへのパスは絶対パスである必要があります。
第2章 Ansible ロールを使用したクライアント上の反復タスクの自動化 リンクのコピーリンクがクリップボードにコピーされました!
2.1. 既存ホストへの Ansible ロールの割り当て リンクのコピーリンクがクリップボードにコピーされました!
Ansible ロールを使用して、Satellite クライアントのリモート管理を行うことができます。
前提条件
- Ansible ロールを設定し、インポートしている。
手順
- Satellite Web UI で、Hosts > All Hosts に移動します。
- ホストを選択し、編集 をクリックします。
- Ansible Roles タブで、Available Ansible Roles のリストから追加するロールを選択します。
- + アイコンをクリックして、ロールをホストに追加します。複数のロールを追加できます。
- Submit をクリックします。
ホストに Ansible ロールを割り当てると、リモート実行用に Ansible を使用できるようになります。詳細は、「リモート実行用の SSH 鍵の配布」 を参照してください。
パラメーター変数のオーバーライド
パラメーター タブで パラメーターの追加 をクリックして、ランタイム時にジョブテンプレートにわたすパラメーター変数を追加します。これには、ホストに関連付けるすべての Ansible Playbook パラメーターとホストパラメーターが含まれます。Ansible のジョブテンプレートでパラメーター変数を使用するには、ホストパラメーター を追加する必要があります。
2.2. ホストからの Ansible ロールの削除 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、Ansible ロールをホストから削除します。
手順
- Satellite Web UI で、Hosts > All Hosts に移動します。
- ホストを選択し、Edit をクリックします。
- Ansible Roles タブを選択します。
- Assigned Ansible Roles エリアで、- アイコンをクリックして、ホストからロールを削除します。さらにロールを削除するには、これを繰り返します。
- Submit をクリックします。
2.3. Ansible ロールの順序の変更 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、ホストに適用される Ansible ロールの順序を変更します。
手順
- Satellite Web UI で、Hosts > All Hosts に移動します。
- ホストを選択します。
- Ansible Roles タブを選択します。
- Assigned Ansible Roles エリアで、ロールを適切な位置にドラッグアンドドロップすることで、ロールの順序を変更できます。
- Submit をクリックして、Ansible ロールの順序を保存します。
2.4. ホストでの Ansible ロールの実行 リンクのコピーリンクがクリップボードにコピーされました!
Satellite Web UI を使用して、ホストで Ansible ロールを実行できます。
前提条件
- デプロイメントで Ansible ロールを実行するように設定しておく。詳細は、「Ansible ロールを実行するための Satellite の設定」 を参照してください。
- Ansible ロールをホストに割り当てておく。
手順
- Satellite Web UI で、Hosts > All Hosts に移動します。
- 実行する Ansible ロールが含まれるホストのチェックボックスを選択します。
- Select Action リストから、Run all Ansible roles を選択します。
Run Ansible roles ページで、Ansible ジョブのステータスを表示できます。ジョブを再実行するには、Rerun をクリックします。
2.5. ホストグループへの Ansible ロールの割り当て リンクのコピーリンクがクリップボードにコピーされました!
Ansible ロールを使用して、Satellite クライアントのリモート管理を行うことができます。
前提条件
- デプロイメントで Ansible ロールを実行するように設定しておく。詳細は、「Ansible ロールを実行するための Satellite の設定」 を参照してください。
手順
- Satellite Web UI で、Configure > Host Groups に移動します。
- Ansible ロールを割り当てるホストグループ名をクリックします。
- Ansible Roles タブで、Available Ansible Roles のリストから追加するロールを選択します。
- + アイコンをクリックして、ロールをホストグループに追加します。複数のロールを追加できます。
- Submit をクリックします。
2.6. ホストグループでの Ansible ロールの実行 リンクのコピーリンクがクリップボードにコピーされました!
Satellite Web UI を使用して、ホストグループで Ansible ロールを実行できます。
前提条件
- デプロイメントで Ansible ロールを実行するように設定しておく。詳細は、「Ansible ロールを実行するための Satellite の設定」 を参照してください。
- Ansible ロールをホストグループに割り当てておく。
- ホストグループに最低でもホストを 1 台以上設定する必要がある。
手順
- Satellite Web UI で、Configure > Host Groups に移動します。
- ホストグループの Actions コラムのリストから、Run all Ansible roles を選択します。
Run Ansible roles ページで、Ansible ジョブのステータスを表示できます。Rerun をクリックしてジョブを再実行します。
2.7. チェックモードでの Ansible ロールの実行 リンクのコピーリンクがクリップボードにコピーされました!
Satellite Web UI を使用して、チェックモードで Ansible ロールを実行できます。
前提条件
- デプロイメントで Ansible ロールを実行するように設定しておく。詳細は、「Ansible ロールを実行するための Satellite の設定」 を参照してください。
- Ansible ロールをホストグループに割り当てておく。
- ホストグループに最低でもホストを 1 台以上設定する必要がある。
手順
- Satellite Web UI で、Hosts > All Hosts に移動します。
- チェックモードを有効にするホストの Edit をクリックします。
-
Parameters タブで、ホストに
ansible_roles_check_modeという名前のパラメーターがあり、boolean型がtrueに設定されていることを確認します。 - Submit をクリックします。
第3章 Satellite からの Ansible Playbook の実行 リンクのコピーリンクがクリップボードにコピーされました!
Satellite でリモートジョブを実行することにより、ホストまたはホストグループで Ansible Playbook を実行できます。
Ansible Playbook ジョブテンプレートのホストパラメーターの制限
複数のホストで Ansible Playbook を実行すると、Satellite はバッチ内のすべてのホストに対して Playbook をレンダリングしますが、バッチ内のすべてのホストで実行するために最初のホストのレンダリングされた Playbook のみを使用します。したがって、テンプレート制御フロー構造でホストパラメーターを使用して、ホストごとに Playbook の動作を変更することはできません。ホストパラメーターは Ansible 変数に変換されるため、ネイティブ Ansible 構造の動作を制御するために使用できます。詳細は、BZ#2282275 を参照してください。
前提条件
- Satellite の Ansible プラグインが有効になっている。
- リモートジョブ実行が設定されている。詳細は、4章リモートジョブの設定およびセットアップ を参照してください。
- 使用する準備が完了している Ansible Playbook がある。
手順
- Satellite Web UI で、Monitor > Jobs に移動します。
- Run Job をクリックします。
-
Job category で、
Ansible Playbookを選択します。 -
Job template で、
Ansible - Run playbookを選択します。 - Next をクリックします。
- Playbook を実行するホストを選択します。
- Playbook フィールドに、Ansible Playbook の内容を貼り付けます。
- ウィザードに従ってリモートジョブの設定を完了します。詳細は、「リモートジョブの実行」 を参照してください。
- Submit をクリックして、ホストで Ansible Playbook を実行します。
関連情報
または、Capsule Server から Ansible Playbook をインポートすることもできます。詳細は、以下を参照してください。
第4章 リモートジョブの設定およびセットアップ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Satellite は、ホスト上でのコマンドのリモート実行をサポートします。リモート実行を使用すると、複数のホストで同時にさまざまなタスクを実行できます。
4.1. Red Hat Satellite でのリモート実行 リンクのコピーリンクがクリップボードにコピーされました!
リモート実行を使用すると、シェルスクリプトまたは Ansible タスクと Playbook を使用して、Capsule からホスト上でジョブをリモート実行できます。
Satellite でリモート実行を使用すると、次の利点が得られます。
- 複数のホストでジョブを同時に実行できます。
- コマンドで変数を使用して、実行するジョブをより細かく制御できます。
- ホストファクトとパラメーターを使用して、変数の値を設定できます。
- コマンドを実行するときに、テンプレートのカスタム値を指定できます。
リモート実行の通信は Capsule Server を介して行われます。そのため、Satellite Server はターゲットホストに直接アクセスする必要がなく、多数のホストを管理するように拡張できます。詳細は、「リモート実行用のトランスポートモード」 を参照してください。
リモート実行を使用するには、ジョブテンプレートを定義する必要があります。ジョブテンプレートは、リモートホストに適用するコマンドです。ジョブテンプレートは複数回実行できます。
Satellite は、ERB 構文ジョブテンプレートを使用します。詳細は、ホストの管理 の テンプレート作成リファレンス を参照してください。
Satellite にはデフォルトでシェルスクリプトと Ansible のジョブテンプレートがいくつか含まれています。詳細は、ホストの管理 の ジョブテンプレートのセットアップ を参照してください。
関連情報
- ホストの管理 の リモートジョブの実行 を参照してください。
4.2. リモート実行のワークフロー リンクのコピーリンクがクリップボードにコピーされました!
作成したカスタム Ansible ロール、またはダウンロードしたロールの場合、そのロールを含むパッケージを Capsule Server にインストールする必要があります。Ansible ロールを使用する前に、ロールがインストールされている Capsule から Satellite にロールをインポートする必要があります。
ホストでリモートジョブを実行すると、すべてのホストについて、Satellite は以下のアクションを実行して、使用するリモート実行 Capsule を検出します。
Satellite は、Ansible 機能が有効になっている Capsules のみを検索します。
- Satellite は、Remote execution のチェックボックスが選択されているホストのインターフェイスを検出します。
- Satellite はこれらのインターフェイスのサブネットを検出します。
- Satellite は、これらのサブネットに割り当てられたリモート実行 Capsule を検出します。
- この Capsule のセットから、Satellite は実行中のジョブの数が最も少ない Capsule を選択します。こうすることで、Satellite はリモート実行 Capsule 間でのジョブの負荷を確実に分散させます。
Prefer registered through Capsule for remote execution を有効にした場合、Satellite はホストが登録されている Capsule を使用して REX ジョブを実行します。
デフォルトでは、Prefer registered through Capsule for remote execution は No に設定されています。これを有効にするには、Satellite Web UI で Administer > Settings に移動し、Content タブで、Prefer registered through Capsule for remote execution を Yes に設定します。これにより、Satellite が登録先の Capsule によってホスト上で REX ジョブを実行することが保証されます。
この段階で Satellite がリモート実行 Capsule を検出できず、任意の Capsule へのフォールバック 設定が有効になっている場合、Satellite は別の Capsule のセットを追加して、そこからリモート実行 Capsule を選択します。Satellite は、ホストに割り当てられている以下のタイプの Capsule の中から最も負荷の少ない Capsule を選択します。
- ホストのサブネットに割り当てられた DHCP Capsule、DNS Capsule、および TFTP Capsule
- ホストのドメインに割り当てられた DNS Capsule
- ホストのレルムに割り当てられた Realm Capsule
- Puppet server Capsule
- Puppet CA Capsule
- OpenSCAP Capsule
この段階で Satellite がリモート実行 Capsule を検出せず、グローバル Capsule の有効化 設定が有効になっている場合、Satellite は、ホストの組織およびロケーションにあるすべての Capsule のセットから最も負荷の少ないリモート実行 Capsule を選択し、リモートジョブを実行します。
4.3. リモート実行用のパーミッション リンクのコピーリンクがクリップボードにコピーされました!
インフラストラクチャー内でどのロールをどのジョブを実行できるか (ターゲットにするホストを含めて) を制御できます。リモート実行機能は 2 つの組み込みロールを提供します。
- Remote Execution Manager: すべてのリモート実行機能にアクセスできます。
- Remote Execution User: ジョブの実行のみ可能です。
Remote Execution User ロールのクローンを作成し、そのフィルターをカスタマイズして詳細度を高めることができます。カスタマイズされたロールで view_job_templates パーミッションを使用してフィルターを調整する場合、ユーザーは一致するジョブテンプレートに基づくジョブのみを確認し、トリガーすることが可能です。view_hosts パーミッションおよび view_smart_proxies パーミッションを使用すると、ロールに表示されるホストまたは Capsule を制限できます。
execute_template_invocation パーミッションは、ジョブの実行が開始する直前に確認される特殊なパーミッションです。このパーミッションは、特定のホストで実行できるジョブテンプレートを定義します。これにより、パーミッションの指定時に詳細度をさらに高めることができます。
execute_jobs_on_infrastructure_hosts パーミッションを使用して、Red Hat Satellite にホストとして登録された Red Hat Satellite および Capsule に対してリモート実行ジョブを実行できます。標準の Manager と Site Manager のロールには、デフォルトでこのパーミッションがあります。Manager または Site Manager ロールのいずれかを使用する場合、または execute_jobs_on_infrastructure_hosts パーミッションを持つカスタムロールを使用する場合は、登録済みの Red Hat Satellite および Capsule ホストに対してリモートジョブを実行できます。
ロールおよびパーミッションの使用に関する詳細は、Red Hat Satellite の管理 の ロールの作成および管理 を参照してください。
以下の例は、execute_template_invocation パーミッションのフィルターを示しています。
name = Reboot and host.name = staging.example.com name = Reboot and host.name ~ *.staging.example.com name = "Restart service" and host_group.name = webservers
name = Reboot and host.name = staging.example.com
name = Reboot and host.name ~ *.staging.example.com
name = "Restart service" and host_group.name = webservers
この例の最初の行を使用して、選択した 1 つのホストに Reboot テンプレートを適用します。2 行目を使用して、名前の末尾が .staging.example.com となるように、ホストのプールを定義します。3 行目を使用して、テンプレートをホストグループにバインドします。
これらのロールを持つユーザーに割り当てられるパーミッションは、時間の経過とともに変化する可能性があります。将来実行するジョブがすでにスケジュールされている場合に、パーミッションが変更されると、ジョブの実行直前にパーミッションがチェックされるため、実行が失敗する可能性があります。
4.4. リモート実行用のトランスポートモード リンクのコピーリンクがクリップボードにコピーされました!
Satellite が、リモートジョブ実行に 2 つの異なるトランスポートモードを使用するように設定できます。1 つの Capsule を、どちらか一方のモードを使用するように設定することはできますが、両方を使用するように設定することはできません。
- プッシュベースのトランスポート
sshモードの Capsule では、リモート実行は SSH サービスを使用してジョブの詳細を転送します。これは、デフォルトのトランスポートモードです。ターゲットホストで SSH サービスを有効にし、アクティブにする必要があります。リモート実行 Capsule は、ターゲットホストの SSH ポートにアクセスできる必要があります。別の設定がない限り、標準の SSH ポートは 22 です。このトランスポートモードは、スクリプトプロバイダーと Ansible プロバイダーの両方をサポートします。
- プルベースのトランスポート
pull-mqttモードの Capsule では、リモート実行は Message Queueing Telemetry Transport (MQTT) を使用して、Satellite Server から受信するジョブ実行を開始します。ホストは、yggdrasilプルクライアントを使用してジョブ通知のために Capsule の MQTT ブローカーをサブスクライブします。ホストは MQTT ブローカーから通知を受信すると、HTTPS 経由で Capsule からジョブの詳細を取得し、ジョブを実行して、結果を Capsule に報告します。このトランスポートモードは、スクリプトプロバイダーのみをサポートします。
pull-mqttモードを使用するには、Capsule Server でこのモードを有効にし、ホストでプルクライアントを設定する必要があります。
Capsule ですでに pull-mqtt モードを使用していて、ssh モードに戻す必要がある場合は、次の satellite-installer コマンドを実行します。
satellite-installer --foreman-proxy-plugin-remote-execution-script-mode=ssh
# satellite-installer --foreman-proxy-plugin-remote-execution-script-mode=ssh
関連情報
- Capsule Server でプルモードを有効にするには、Capsule Server のインストール の リモート実行用のプルベーストランスポートの設定 を参照してください。
- 登録済みのホストでプルモードを有効にするには、「プルクライアントを使用するためのホストの設定」 に進みます。
新しいホストでプルモードを有効にするには、ホストの管理 の次の手順に従います。
4.5. プルクライアントを使用するためのホストの設定 リンクのコピーリンクがクリップボードにコピーされました!
pull-mqtt モードを使用するように設定された Capsule の場合には、ホストはリモート実行プルクライアントを使用してリモートジョブにサブスクライブできます。ホストは、Capsule Server からの SSH 接続を必要としません。
前提条件
- ホストを Satellite に登録している。
-
ホストが登録されている Capsule が、
pull-mqttモードを使用するように設定されている。詳細は、Capsule Server のインストール の リモート実行用のプルベーストランスポートの設定 を参照してください。 - ホストのオペレーティングシステムバージョン用の Red Hat Satellite Client 6 リポジトリーが、Satellite Server 上で同期され、ホストのコンテンツビューおよびライフサイクル環境で使用可能であり、ホストに対して有効になっている。詳細は、コンテンツの管理 の Satellite でホストのリポジトリーセットのステータスを変更する を参照してください。
-
ホストがポート
1883を使用して MQTT 経由で Capsule と通信できる。 -
ホストはポート
9090を使用して HTTPS 経由で Capsule と通信できます。
手順
ホストに
katello-pull-transport-migrateパッケージをインストールします。Red Hat Enterprise Linux 9 ホストおよび Red Hat Enterprise Linux 8 ホストの場合:
dnf install katello-pull-transport-migrate
# dnf install katello-pull-transport-migrateCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Enterprise Linux 7 ホストの場合:
yum install katello-pull-transport-migrate
# yum install katello-pull-transport-migrateCopy to Clipboard Copied! Toggle word wrap Toggle overflow
このパッケージは、依存関係として
foreman_ygg_workerとyggdrasilをインストールし、yggdrasilクライアントを設定し、ホスト上でプルクライアントワーカーを起動します。
検証
yggdrasildサービスのステータスを確認します。systemctl status yggdrasild
# systemctl status yggdrasildCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6. ジョブテンプレートの作成 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用してジョブテンプレートを作成します。Satellite Web UI の代わりに CLI を使用する場合は、CLI 手順 を参照してください。
手順
- Satellite Web UI で、Hosts > Templates > Job templates に移動します。
- 新規ジョブテンプレート をクリックします。
- テンプレート タブをクリックして、名前 フィールドにジョブテンプレートの一意名を入力します。
- デフォルト を選択して、テンプレートをすべての組織およびロケーションで利用できるようにします。
- テンプレートエディターで直接テンプレートを作成するか、インポート をクリックしてテキストファイルからテンプレートをアップロードします。
- オプション: 監査コメント フィールドで、変更に関する情報を追加します。
- Job タブをクリックし、Job category フィールドに独自のカテゴリーを入力するか、ホストの管理 の デフォルトのジョブテンプレートカテゴリー にリストされているデフォルトカテゴリーから選択します。
-
オプション: 説明形式 フィールドで説明テンプレートを入力します。(例:
Install package %{package_name})。また、テンプレートでは%{template_name}および%{job_category}も使用できます。 - プロバイダータイプ リストから、Shell スクリプトに SSH を、Ansible タスクまたは Playbook に Ansible を選択します。
- オプション: Timeout to kill フィールドで、ジョブが完了しない場合に、ジョブを中断するタイムアウトの値を入力します。
- オプション: 入力を追加 をクリックし、入力パラメーターを定義します。ジョブの実行時にパラメーターを要求し、テンプレートに定義する必要はありません。各種サンプルについては、ヘルプ タブを参照してください。
- オプション: 外部入力セット をクリックして、このジョブの他のテンプレートを追加します。
-
オプション: 実効ユーザー エリアで、コマンドでデフォルトの
remote_execution_effective_user設定を使用できない場合に、ユーザーを設定します。 - オプション: このテンプレートをスニペットとして他のテンプレートに追加する場合は、タイプ タブをクリックして、スニペット を選択します。
- オプション: Ansible プロバイダーを使用する場合は、Ansible タブをクリックします。Enable Ansible Callback を選択すると、ジョブの終了後に、ホストが設定レポートの作成に使用されるファクトを Satellite に送信できるようになります。
- ロケーション タブをクリックして、テンプレートを使用するロケーションを追加します。
- 組織 タブをクリックして、テンプレートを使用する組織を追加します。
- Submit をクリックして変更を保存します。
テンプレート構文に他のテンプレートを追加して、ジョブテンプレートを拡張およびカスタマイズできます。詳細は、ホストの管理 の テンプレート作成リファレンス および ジョブテンプレートの例および拡張 を参照してください。
CLI 手順
テンプレート定義ファイルを使用してジョブテンプレートを作成するには、以下のコマンドを使用します。
hammer job-template create \ --file "Path_to_My_Template_File" \ --job-category "My_Category_Name" \ --name "My_Template_Name" \ --provider-type SSH
# hammer job-template create \ --file "Path_to_My_Template_File" \ --job-category "My_Category_Name" \ --name "My_Template_Name" \ --provider-type SSHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7. 名前による Ansible Playbook のインポート リンクのコピーリンクがクリップボードにコピーされました!
Capsule にインストールされているコレクションから Satellite に、名前を使用して Ansible Playbook をインポートできます。Satellite は、インポートされた Playbook からジョブテンプレートを作成し、そのテンプレートを Ansible Playbook - Imported ジョブカテゴリーに配置します。
カスタムコレクションがある場合は、/etc/ansible/collections/ansible_collections/My_Namespace/My_Collection に配置します。
前提条件
- Ansible プラグインが有効になっている。
-
Satellite アカウントに
import_ansible_playbooksパーミッションを付与するロールがある。
手順
次の API 要求を使用して、利用可能な Ansible Playbook を取得します。
curl -X GET -H 'Content-Type: application/json' https://satellite.example.com/ansible/api/v2/ansible_playbooks/fetch?proxy_id=My_capsule_ID
# curl -X GET -H 'Content-Type: application/json' https://satellite.example.com/ansible/api/v2/ansible_playbooks/fetch?proxy_id=My_capsule_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow - インポートする Ansible Playbook を選択し、その名前を書き留めます。
その名前を使用して Ansible Playbook をインポートします。
curl -X PUT -H 'Content-Type: application/json' -d '{ "playbook_names": ["My_Playbook_Name"] }' https://satellite.example.com/ansible/api/v2/ansible_playbooks/sync?proxy_id=My_capsule_ID# curl -X PUT -H 'Content-Type: application/json' -d '{ "playbook_names": ["My_Playbook_Name"] }' https://satellite.example.com/ansible/api/v2/ansible_playbooks/sync?proxy_id=My_capsule_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow インポートが完了すると、Satellite Web UI で通知が表示されます。
次のステップ
- 作成されたジョブテンプレートからリモートジョブを実行することで、Playbook を実行できます。詳細は、「リモートジョブの実行」 を参照してください。
4.8. 利用可能なすべての Ansible Playbook のインポート リンクのコピーリンクがクリップボードにコピーされました!
利用可能なすべての Ansible Playbook は、Capsule にインストールされているコレクションから Satellite にインポートできます。Satellite は、インポートされた Playbook からジョブテンプレートを作成し、そのテンプレートを Ansible Playbook - Imported ジョブカテゴリーに配置します。
カスタムコレクションがある場合は、/etc/ansible/collections/ansible_collections/My_Namespace/My_Collection に配置します。
前提条件
- Ansible プラグインが有効になっている。
-
Satellite アカウントに
import_ansible_playbooksパーミッションを付与するロールがある。
手順
次の API 要求を使用して Ansible Playbook をインポートします。
curl -X PUT -H 'Content-Type: application/json' https://satellite.example.com/ansible/api/v2/ansible_playbooks/sync?proxy_id=My_capsule_ID
# curl -X PUT -H 'Content-Type: application/json' https://satellite.example.com/ansible/api/v2/ansible_playbooks/sync?proxy_id=My_capsule_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow インポートが完了すると、Satellite Web UI で通知が表示されます。
次のステップ
- 作成されたジョブテンプレートからリモートジョブを実行することで、Playbook を実行できます。詳細は、「リモートジョブの実行」 を参照してください。
4.9. Satellite の任意の Capsule リモート実行設定へのフォールバックを設定する リンクのコピーリンクがクリップボードにコピーされました!
Fallback to Any Capsule 設定を有効にして、ホストに割り当てられている Capsule のリストからリモート実行 Capsule を検索するように Satellite を設定できます。これは、サブネットが設定されていないホストでリモートジョブを実行する必要がある場合、またはリモート実行機能が有効になっていない Capsule にホストのサブネットが割り当てられている場合に役立ちます。
任意の Capsule へのフォールバック 設定が有効になっている場合、Satellite は別の Capsule のセットを追加して、そこからリモート実行 Capsule を選択します。また、以下のように Satellite は、ホストに割り当てられたすべての Capsule のセットから最も負荷の少ない Capsule を選択します。
- ホストのサブネットに割り当てられた DHCP Capsule、DNS Capsule、および TFTP Capsule
- ホストのドメインに割り当てられた DNS Capsule
- ホストのレルムに割り当てられた Realm Capsule
- Puppet server Capsule
- Puppet CA Capsule
- OpenSCAP Capsule
手順
- Satellite Web UI で、Administer > Settings に移動します。
- Remote Execution をクリックします。
- 任意の Capsule へのフォールバック を設定します。
CLI 手順
Satellite で
hammer settings setコマンドを入力して、任意の Capsule へのフォールバック を設定します。値をtrueに設定するには、次のコマンドを入力します。hammer settings set \ --name=remote_execution_fallback_proxy \ --value=true
# hammer settings set \ --name=remote_execution_fallback_proxy \ --value=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.10. Satellite でのグローバル Capsule リモート実行の設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで Satellite は、Capsule がホストのサブネットに割り当てられているかどうかに関係なく、ホストの組織とロケーションでリモート実行 Capsule を検索します。ホストのサブネットに割り当てられている Capsule に検索を限定する場合は、グローバル Capsule の有効化 設定を無効化することができます。
グローバル Capsule の有効化 設定が有効になっている場合、Satellite は別の Capsule のセットを追加して、そこからリモート実行 Capsule を選択します。また、Satellite は、ホストの組織およびロケーションにあるすべての Capsule のセットから最も負荷の少ないリモート実行 Capsule を選択し、リモートジョブを実行します。
手順
- Satellite Web UI で、Administer > Settings に移動します。
- Remote Execution をクリックします。
- グローバル Capsule の有効化 を設定します。
CLI 手順
Satellite で
hammer settings setコマンドを入力して、Enable Global Capsuleを設定します。値をtrueに設定するには、次のコマンドを入力します。hammer settings set \ --name=remote_execution_global_proxy \ --value=true
# hammer settings set \ --name=remote_execution_global_proxy \ --value=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.11. 代替ディレクトリーを使用してホストでリモートジョブを実行するための Satellite の設定 リンクのコピーリンクがクリップボードにコピーされました!
Ansible は、サーバー側で必要な独自のファイルを /tmp ディレクトリーに配置します。必要に応じて別のディレクトリーを設定することもできます。
手順
Satellite Server または Capsule Server で、新しいディレクトリーを作成します。
mkdir /My_Remote_Working_Directory
# mkdir /My_Remote_Working_DirectoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトの
/tmpディレクトリーから SELinux コンテキストをコピーします。chcon --reference=/tmp /My_Remote_Working_Directory
# chcon --reference=/tmp /My_Remote_Working_DirectoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいディレクトリーを使用するように Satellite Server または Capsule Server を設定します。
satellite-installer \ --foreman-proxy-plugin-ansible-working-dir /My_Remote_Working_Directory
# satellite-installer \ --foreman-proxy-plugin-ansible-working-dir /My_Remote_Working_DirectoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.12. 権限昇格方法の変更 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、プッシュベースのリモート実行は sudo を使用して、SSH ユーザーから、ホスト上でスクリプトを実行する実効ユーザーに切り替えます。状況によっては、su や dzdo などの別の方法の使用が必要になる場合があります。Satellite 設定で、別の方法をシステム全体に設定できます。
前提条件
-
ユーザーアカウントに、
view_settingsおよびedit_settings権限を付与するロールが割り当てられている。 -
Ansible ジョブに
dzdoを使用する場合は、必要な dzdo become プラグインを含むcommunity.generalAnsible コレクションがインストールされていることを確認する。詳細は、Ansible ドキュメント の Installing collections を参照してください。
手順
- Administer > Settings に移動します。
- Remote Execution タブを選択します。
- Effective User Method 設定の値をクリックします。
- 新しい値を選択します。
- Submit をクリックします。
4.13. リモート実行用の SSH 鍵の配布 リンクのコピーリンクがクリップボードにコピーされました!
ssh モードの Capsule の場合、リモート実行接続は SSH を使用して認証されます。Capsule からの公開 SSH 鍵は、管理するアタッチ済みのホストに配布する必要があります。
ホストで SSH サービスが有効化され、実行していることを確認します。ポート 22 にアクセスできるように、ネットワークまたはホストベースのファイアウォールを設定し、ポート 22 へのアクセスを有効化します。
Capsule からターゲットホストに公開 SSH 鍵を配布するには、以下のいずれか 1 つの方法を使用します。
- 「リモート実行用の SSH 鍵の手動配布」
- 「Satellite API を使用したリモート実行用の SSH 鍵の取得」
- 「プロビジョニング中に SSH 鍵を配布するためのキックスタートテンプレートの設定」
- 新しい Satellite ホストの場合、グローバル登録テンプレートを使用して、登録中に SSH 鍵を Satellite ホストにデプロイすることができます。詳細は、ホストの管理 の グローバル登録テンプレートを使用した Red Hat Satellite へのホストの登録 を参照してください。
Satellite は、リモート実行機能の SSH 鍵を、デフォルトで Satellite からプロビジョニングされたホストに配布します。
ホストが Amazon Web Services で実行されている場合は、パスワード認証を有効にします。詳細は、New User Accounts を参照してください。
4.14. リモート実行用の SSH 鍵の手動配布 リンクのコピーリンクがクリップボードにコピーされました!
SSH 鍵を手動で配布するには、以下の手順を実行します。
手順
SSH 公開鍵を Capsule からターゲットホストにコピーします。
ssh-copy-id -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy.pub root@client.example.com
# ssh-copy-id -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy.pub root@client.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 管理するターゲットホストごとにこの手順を繰り返します。
検証
ターゲットホストに鍵が正常にコピーされたことを確認するには、Capsule で以下のコマンドを入力します。
ssh -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy root@client.example.com
# ssh -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy root@client.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.15. リモート実行に使用する SSH 鍵へのパスフレーズの追加 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Capsule はパスフレーズで保護されていない SSH 鍵を使用してホスト上でリモートジョブを実行します。以下の手順に従って、SSH 鍵をパスフレーズで保護できます。
手順
Satellite Server または Capsule Server で、
ssh-keygenを使用して SSH 鍵にパスフレーズを追加します。ssh-keygen -p -f ~foreman-proxy/.ssh/id_rsa_foreman_proxy
# ssh-keygen -p -f ~foreman-proxy/.ssh/id_rsa_foreman_proxyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
- ユーザーはホスト上でリモート実行ジョブを実行するときにパスフレーズを使用する必要があります。
4.16. Satellite API を使用したリモート実行用の SSH 鍵の取得 リンクのコピーリンクがクリップボードにコピーされました!
Satellite API を使用して Capsule から公開鍵をダウンロードするには、各ターゲットホストでこの手順を実行します。
手順
ターゲットホストで
~/.sshディレクトリーを作成し、SSH 鍵を保存します。mkdir ~/.ssh
# mkdir ~/.sshCopy to Clipboard Copied! Toggle word wrap Toggle overflow Capsule から SSH 鍵をダウンロードします。
curl https://capsule.example.com:9090/ssh/pubkey >> ~/.ssh/authorized_keys
# curl https://capsule.example.com:9090/ssh/pubkey >> ~/.ssh/authorized_keysCopy to Clipboard Copied! Toggle word wrap Toggle overflow ~/.sshディレクトリーのパーミッションを設定します。chmod 700 ~/.ssh
# chmod 700 ~/.sshCopy to Clipboard Copied! Toggle word wrap Toggle overflow authorized_keysファイルのパーミッションを設定します。chmod 600 ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keysCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.17. プロビジョニング中に SSH 鍵を配布するためのキックスタートテンプレートの設定 リンクのコピーリンクがクリップボードにコピーされました!
remote_execution_ssh_keys スニペットをカスタムのキックスタートテンプレートに追加すると、プロビジョニング中に SSH 鍵をホストにデプロイできます。Satellite に同梱されるキックスタートテンプレートには、デフォルトでこのスニペットが含まれています。Satellite は、プロビジョニング中にリモート実行用の SSH 鍵をシステムにコピーします。
手順
新しくプロビジョニングされたホストに公開鍵を含めるには、使用するキックスタートテンプレートに以下のスニペットを追加します。
<%= snippet 'remote_execution_ssh_keys' %>
<%= snippet 'remote_execution_ssh_keys' %>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.18. Kerberos Ticket Granting Ticket のキータブの設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して、Satellite がキータブを使用して Kerberos Ticket Granting Ticket を取得するように設定します。キータブを設定しない場合は、チケットを手動で取得する必要があります。
手順
foreman-proxyユーザーの ID を特定します。id -u foreman-proxy
# id -u foreman-proxyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいファイルのパーミッションが
600になるように、umaskの値を変更します。umask 077
# umask 077Copy to Clipboard Copied! Toggle word wrap Toggle overflow キータブ用のディレクトリーを作成します。
mkdir -p "/var/kerberos/krb5/user/My_User_ID"
# mkdir -p "/var/kerberos/krb5/user/My_User_ID"Copy to Clipboard Copied! Toggle word wrap Toggle overflow キータブを作成するか、既存のキータブをディレクトリーにコピーします。
cp My_Client.keytab /var/kerberos/krb5/user/My_User_ID/client.keytab
# cp My_Client.keytab /var/kerberos/krb5/user/My_User_ID/client.keytabCopy to Clipboard Copied! Toggle word wrap Toggle overflow ディレクトリーの所有者を
foreman-proxyユーザーに変更します。chown -R foreman-proxy:foreman-proxy "/var/kerberos/krb5/user/My_User_ID"
# chown -R foreman-proxy:foreman-proxy "/var/kerberos/krb5/user/My_User_ID"Copy to Clipboard Copied! Toggle word wrap Toggle overflow キータブファイルが読み取り専用であることを確認します。
chmod -wx "/var/kerberos/krb5/user/My_User_ID/client.keytab"
# chmod -wx "/var/kerberos/krb5/user/My_User_ID/client.keytab"Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux コンテキストを復元します。
restorecon -RvF /var/kerberos/krb5
# restorecon -RvF /var/kerberos/krb5Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.19. リモート実行用の Kerberos 認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
Kerberos 認証を使用して、Satellite ホストでのリモート実行に SSH 接続を確立できます。
前提条件
- Kerberos サーバーに Satellite Server を登録する。
- Kerberos サーバーに Satellite ターゲットホストを登録する。
- リモート実行用に Kerberos ユーザーアカウントを設定して初期化する。
- Satellite の foreman-proxy ユーザーが有効な Kerberos Ticket Granting Ticket を持っていることを確認する。
手順
リモート実行に Kerberos 認証をインストールおよび有効にするには、以下のコマンドを入力します。
satellite-installer --foreman-proxy-plugin-remote-execution-script-ssh-kerberos-auth true
# satellite-installer --foreman-proxy-plugin-remote-execution-script-ssh-kerberos-auth trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - リモート実行のデフォルトユーザーを編集するには、Satellite Web UI で Administer > Settings に移動して、Remote Execution タブをクリックします。SSH User 行で 2 番目のコラムを編集し、Kerberos アカウントのユーザー名を追加します。
- remote_execution_effective_user に移動し、2 番目のコラムを編集して、Kerberos アカウントのユーザー名を追加します。
検証
- Kerberos 認証が使用できることを確認するには、ホストでリモートジョブを実行します。詳細は、Ansible 統合を使用した設定の管理 の リモートジョブの実行 を参照してください。
4.20. ジョブテンプレートのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
Satellite は、ジョブ実行に使用可能なデフォルトのジョブテンプレートを提供します。ジョブテンプレートのリストを表示するには、Hosts > Templates > Job templates に移動します。テンプレートを変更せずに使用する場合は、ホストの管理 の リモートジョブの実行 に進みます。
デフォルトテンプレートは独自のテンプレートを作成するためのベースとして使用することができます。デフォルトのジョブテンプレートは、編集できないようにロックされています。テンプレートのクローンを作成して、作成したクローンを編集します。
手順
- テンプレートのクローンを作成するには、アクション コラムで、クローン を選択します。
- クローンに一意名を指定して、送信 をクリックして変更を保存します。
ジョブテンプレートは、Embedded Ruby (ERB) 構文を使用します。テンプレート作成の詳細は、ホストの管理 ガイドの テンプレート作成リファレンス を参照してください。
Ansible に関する考慮事項
Ansible ジョブテンプレートを作成するには、以下の手順を使用し、ERB 構文ではなく YAML 構文を使用します。テンプレートは --- で開始します。Ansible playbook YAML ファイルをジョブテンプレートの本文に埋め込みます。また、ERB 構文を追加して、YAML Ansible テンプレートをカスタマイズすることも可能です。Satellite に Ansible Playbook をインポートすることも可能です。詳細は、ホストの管理 の リポジトリーテンプレートの同期 を参照してください。
パラメーター変数
ランタイム時に、ジョブテンプレートはホストに定義するパラメーター変数を受け取ることができます。ホストの編集ページの パラメーター タブで表示されるパラメーターのみが、ジョブテンプレートの入力パラメーターとして使用できる点にご留意ください。
4.21. リモートジョブの実行 リンクのコピーリンクがクリップボードにコピーされました!
1 つ以上のホストに対してジョブテンプレートに基づくジョブを実行することができます。
Satellite Web UI の代わりに CLI を使用する場合は、CLI 手順 を参照してください。
手順
- Satellite Web UI で、Monitor > Jobs に移動し、Run job をクリックします。
- 使用する Job category と Job template を選択し、Next をクリックします。
ジョブを実行するホストを選択します。ホストを選択しなかった場合、現在のコンテキストで表示されているすべてのホストでジョブが実行されます。
注記ホストグループとそのすべてのサブグループを選択する場合、ホストを選択するだけでは十分ではありません。なぜなら、ジョブはそのグループ内のホスト上でのみ直接実行され、サブグループ内のホスト上では実行されないからです。代わりに、ホストグループとそのすべてのサブグループを選択するか、次の検索クエリーを使用する必要があります。
hostgroup_fullname ~ "My_Host_Group*"
hostgroup_fullname ~ "My_Host_Group*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow My_Host_Group は、最上位のホストグループの名前に置き換えます。
- 必要に応じて、ジョブテンプレートの入力を行います。テンプレートによって入力項目が異なり、入力項目がないテンプレートもあります。必要な入力項目をすべて入力したら、Next をクリックします。
- オプション: ジョブの詳細設定を行うには、Advanced fields に入力します。詳細設定の詳細は、「ジョブウィザードの詳細設定」 を参照してください。
- Next をクリックします。
ジョブの時間をスケジュールします。
- ジョブをすぐに実行するには、事前に選択されている Immediate execution をそのままにしておきます。
- ジョブを将来実行するには、Future execution を選択します。
- ジョブを定期的に実行するには、Recurring execution を選択します。
オプション: 将来または定期的な実行を選択した場合は、Query type を選択します。それ以外の場合は、Next をクリックします。
- Static query を選択すると、指定したリストのホストでジョブが実行されます。
- Dynamic query を選択すると、ジョブを実行する直前にホストのリストが評価されます。何らかのフィルターに基づいてホストのリストを入力した場合、そのフィルターを最初に使用したときとは異なる結果が得られることがあります。
クエリーの種類を選択したら、Next をクリックします。
オプション: 将来または定期的な実行を選択した場合は、追加の詳細を入力します。
- Future execution の場合は、Starts at に開始日時を入力します。また、Starts before の日時を選択することもできます。その時刻までにジョブを開始できない場合、ジョブはキャンセルされます。
- Recurring execution の場合は、開始日時、頻度、および定期的なジョブを終了する条件を選択します。定期的なジョブは、終了しない、特定の時間に終了させる、または指定した回数繰り返した後に終了させることができます。また、ジョブを追跡するための特別なラベルである Purpose を追加することもできます。特定の目的を持つアクティブなジョブは、一度に 1 つしか存在できません。
必要な情報を入力したら、Next をクリックします。
- ジョブの詳細を確認します。ジョブウィザードの任意の部分に戻り、情報を編集することもできます。
- Submit をクリックしてジョブの実行をスケジュールします。
CLI 手順
Satellite で以下のコマンドを入力します。
hammer settings set \ --name=remote_execution_global_proxy \ --value=false
# hammer settings set \ --name=remote_execution_global_proxy \ --value=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用するジョブテンプレートの ID を検出します。
hammer job-template list
# hammer job-template listCopy to Clipboard Copied! Toggle word wrap Toggle overflow テンプレートの詳細を表示して、テンプレートに必要なパラメーターを確認します。
hammer job-template info --id My_Template_ID
# hammer job-template info --id My_Template_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムパラメーターでリモートジョブを実行します。
hammer job-invocation create \ --inputs My_Key_1="My_Value_1",My_Key_2="My_Value_2",... \ --job-template "My_Template_Name" \ --search-query "My_Search_Query"
# hammer job-invocation create \ --inputs My_Key_1="My_Value_1",My_Key_2="My_Value_2",... \ --job-template "My_Template_Name" \ --search-query "My_Search_Query"Copy to Clipboard Copied! Toggle word wrap Toggle overflow My_Search_Queryは、ホストを定義するフィルター式 (例:"name ~ My_Pattern ")に置き換えます。hammer を使用したリモートコマンド実行に関する詳細は、hammer job-template --helpおよびhammer job-invocation --helpを入力します。
4.22. ジョブウィザードの詳細設定 リンクのコピーリンクがクリップボードにコピーされました!
一部のジョブテンプレートでは、詳細設定を入力する必要があります。一部の詳細設定は、特定のジョブテンプレートにのみ表示されます。以下は、一般的な詳細設定のリストです。
- SSH ユーザー
- SSH でホストに接続する際に使用するユーザー。
- 実効ユーザー
ジョブの実行に使用するユーザー。デフォルトでは、SSH ユーザーです。SSH ユーザーと異なる場合は、アカウントを切り替えるために、設定に応じて su または sudo が使用されます。
-
詳細設定で実効ユーザーを設定すると、Ansible が
ansible_become_userを入力値に設定し、ansible_becomeをtrueに設定します。つまり、Playbook 内でbecome: trueおよびbecome_user: My_Userパラメーターを使用すると、これらは Satellite によって上書きされます。 -
SSH ユーザー と 実効ユーザー が同一の場合、Satellite は
become_userを上書きしません。したがって、Ansible Playbook でカスタムのbecome_userを設定できます。
-
詳細設定で実効ユーザーを設定すると、Ansible が
- 説明
- ジョブの説明テンプレート。
- 強制終了までのタイムアウト時間
- ジョブがまだ終了していない場合に、ジョブを強制終了するまでの時間 (ジョブ開始からの秒数)。
- 取得時間
-
クライアントによってジョブが取得されなかった場合に、ジョブをキャンセルするまでの時間 (秒単位)。この設定は、
pull-mqttトランスポートを使用するホストにのみ適用されます。 - パスワード
- SSH 認証方式が SSH 鍵ではなくパスワードの場合に使用されます。
- 秘密鍵のパスフレーズ
- SSH 鍵がパスフレーズで保護されている場合に使用されます。
- 実効ユーザーのパスワード
- 実効ユーザーが ssh ユーザーと異なる場合に使用されます。
- 同時実行レベル
- 一度に実行するジョブの最大数を定義します。これにより、多数のホストでジョブを実行する場合に、システムリソースの過負荷を防ぐことができます。
- 実行順序
- ホストでジョブを実行する順序を決定します。アルファベット順またはランダム順で実行できます。
4.23. 拡張 Cron 行の使用 リンクのコピーリンクがクリップボードにコピーされました!
リモート実行で cron ジョブをスケジュールする場合、拡張 cron 行を使用してジョブの頻度を指定できます。標準の cron 行には、分、時、日、月、曜日を指定する 5 つのフィールドが含まれています。たとえば、0 5 * * * は毎日午前 5 時を表します。
拡張 cron ラインには次の機能があります。
#を使用して、月の具体的な曜日を指定できます。以下に例を示します。
-
0 0 * * mon#1は、毎月第 1 月曜日を指定します。 -
0 0 * * fri#3,fri#4は、毎月第 3 金曜日と第 4 金曜日を指定します。 -
0 7 * * fri#-1は、毎月最後の金曜日の 07:00 を指定します。 -
0 7 * * fri#Lも、毎月最後の金曜日の 07:00 を指定します。 -
0 23 * * mon#2,tueは、毎月第 2 月曜日および毎週火曜日の 23:00 を指定します。
-
%は、毎月 n 日を指定できます。以下に例を示します。
-
9 0 * * sun%2は、隔週日曜日の 00:09 を指定します。 -
0 0 * * sun%2+1は、奇数日の日曜日を指定します。 -
9 0 * * sun%2,tue%3は、隔週日曜日と毎月第 3 火曜日を指定します。
-
&を使用して、日付と曜日と一致する必要があることを指定できます。以下に例を示します。
-
0 0 30 * 1&は、毎月 30 日の月曜日のみを指定します。
-
4.24. ホストの定期的な Ansible ジョブのスケジュール リンクのコピーリンクがクリップボードにコピーされました!
ホストで Ansible ロールを実行する定期的なジョブをスケジュールできます。
前提条件
-
view_foreman_tasks、view_job_invocations、およびview_repeat_logics権限があることを確認する。
手順
- Satellite Web UI で、ホスト > すべてのホスト に移動し、リモートジョブを実行するターゲットホストを選択します。
- Ansible タブで、ジョブ を選択します。
- Schedule recurring job をクリックします。
- Create New Recurring Ansible Run ウィンドウで、最初の実行の繰り返し頻度、開始時刻、日付を定義します。
- Submit をクリックします。
- オプション: ホストの概要で、または Ansible > Jobs に移動して、スケジュールされた Ansible ジョブを表示します。
4.25. ホストグループの定期的な Ansible ジョブのスケジュール リンクのコピーリンクがクリップボードにコピーされました!
ホストグループで Ansible ロールを実行する定期的なジョブをスケジュールできます。
手順
- Satellite Web UI で、Configure > Host groups に移動します。
- Actions 列で、Ansible ロールの実行をスケジュールするホストグループの Configure Ansible Job を選択します。
- Schedule recurring job をクリックします。
- Create New Recurring Ansible Run ウィンドウで、最初の実行の繰り返し頻度、開始時刻、日付を定義します。
- Submit をクリックします。
4.26. ジョブの監視 リンクのコピーリンクがクリップボードにコピーされました!
ジョブの実行中にジョブの進捗を監視できます。これは、トラブルシューティングが必要になる場合に役立ちます。
Ansible ジョブは、ホスト 100 台で一括して実行するので、特定のホストで実行するジョブをキャンセルできません。Ansible Playbook を全ホスト上で一括して実行してからでないと、ジョブは完了しません。
手順
-
Satellite Web UI で、Monitor > Jobs に移動します。このページは、
Execute nowが設定されているジョブをトリガーすると自動的に表示されます。スケジュールされたジョブを監視するには、監視 > ジョブ に移動して、検査するジョブ実行を選択します。 - ジョブページで、ホスト タブをクリックします。これにより、ジョブが実行しているホストのリストが表示されます。
- ホスト コラムで、検査するホストの名前をクリックします。これにより、ジョブの実行をリアルタイムで監視できる コマンドの詳細 ページが表示されます。
- いつでも ジョブに戻る をクリックして、ジョブの詳細 ページに戻ることができます。
CLI 手順
ジョブの ID を検出します。
hammer job-invocation list
# hammer job-invocation listCopy to Clipboard Copied! Toggle word wrap Toggle overflow ジョブの出力を監視します。
hammer job-invocation output \ --host My_Host_Name \ --id My_Job_ID
# hammer job-invocation output \ --host My_Host_Name \ --id My_Job_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: ジョブをキャンセルするには、次のコマンドを入力します。
hammer job-invocation cancel \ --id My_Job_ID
# hammer job-invocation cancel \ --id My_Job_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.27. パッケージとエラータのアクションに Ansible プロバイダーを使用する リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Satellite はリモート実行ジョブに Script プロバイダーテンプレートを使用するように設定されています。リモートジョブに Ansible ジョブテンプレートを使用する場合は、関連するリモート実行機能にそのテンプレートをデフォルトで使用するように Satellite を設定できます。
Ansible ジョブテンプレートは、リモート実行が ssh モードに設定されている場合にのみ機能することに注意してください。
手順
- Satellite Web UI で、Administer > Remote Execution Features に移動します。
-
名前に
by_searchが含まれる各機能を検索します。 -
該当する機能のジョブテンプレートを
Katello Script DefaultからKatello Ansible Defaultに変更します。 - Submit をクリックします。
これで、Satellite がリモート実行ジョブに Ansible プロバイダーテンプレートを使用するようになります。このリモート実行ジョブを使用して、パッケージとエラータのアクションを実行できます。これは、Satellite Web UI からのジョブ呼び出しだけでなく、ユーザーが変更した同じリモート実行機能と hammer job-invocation create を使用したジョブ呼び出しにも適用されます。
4.28. Capsule でジョブのレート制限を設定する リンクのコピーリンクがクリップボードにコピーされました!
パフォーマンスの急激な低下を防ぐために、Capsule で一度にアクティブなジョブの最大数を制限できます。ジョブは、Capsule がホストに最初にジョブに関する通知を試みたときから、ホスト上でジョブが終了するまでアクティブになります。
ジョブのレート制限は、MQTT ベースのジョブにのみ適用されます。
アクティブなジョブの最適な最大数は、Capsule Server のコンピューティングリソースによって異なります。デフォルトでは、アクティブなジョブの最大数は無制限です。
手順
satellite-installerを使用して、アクティブなジョブの最大数を設定します。satellite-installer \ --foreman-proxy-plugin-remote-execution-script-mqtt-rate-limit MAX_JOBS_NUMBER
# satellite-installer \ --foreman-proxy-plugin-remote-execution-script-mqtt-rate-limit MAX_JOBS_NUMBERCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
satellite-installer \ --foreman-proxy-plugin-remote-execution-script-mqtt-rate-limit 200
# satellite-installer \ --foreman-proxy-plugin-remote-execution-script-mqtt-rate-limit 200Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 Red Hat Satellite と Ansible Automation Platform の統合 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Satellite と Ansible Automation Platform を統合して、Satellite Server を Ansible Automation Platform の動的インベントリーソースとして使用できます。
また、ホストまたは Ansible Automation Platform のいずれかから、Satellite が管理するホストで Playbook を実行するようにプロビジョニングコールバック機能を使用できます。Satellite Server から新しいホストをプロビジョニングする場合は、プロビジョニングコールバック機能を使用して、Ansible Automation Platform から Playbook の実行をトリガーできます。Playbook は、プロビジョニングプロセスの後にホストを設定します。
5.1. Satellite Server を動的インベントリー項目として Ansible Automation Platform に追加する リンクのコピーリンクがクリップボードにコピーされました!
Satellite Server を動的インベントリー項目として Ansible Automation Platform に追加するには、Ansible Automation Platform で Satellite Server ユーザーの認証情報を作成し、Ansible Automation Platform ユーザーを認証情報に追加してから、インベントリーソースを設定する必要があります。
前提条件
- 数万台のホストを管理するなど、Satellite のデプロイメントが大規模な場合には、管理者以外のユーザーを使用すると、認証の確認中にタイムペナルティーが発生するため、パフォーマンスに悪影響を及ぼす可能性があります。大規模なデプロイメントでは、管理ユーザーの使用を検討する。
-
管理者以外のユーザーは、Satellite Server ユーザーに、
Ansible Tower Inventory Readerロールを割り当てる。ユーザー、ロール、パーミッションフィルターの管理に関する詳細は、Red Hat Satellite の管理 の ロールの作成および管理 を参照してください。 - Satellite Server と Ansible Automation Platform を同じネットワークまたはサブネット上でホストする必要があります。
手順
Ansible Automation Platform Web UI で、Satellite の認証情報を作成します。認証情報の 作成の詳細は、Red Hat Ansible Automation Platform ドキュメントの 新しい認証 情報の作成 および Red Hat Satellite 6 認証情報タイプ を参照してください。
Expand 表5.1 Satellite の認証情報 認証情報の種類 Red Hat Satellite 6 Satellite URL:
https://satellite.example.com
ユーザー名
統合ロールを持つ Satellite ユーザーのユーザー名
パスワード
Satellite ユーザーのパスワード
- Ansible Automation Platform ユーザーを新しい認証情報に追加します。認証情報へのユーザーの 追加の詳細については、Red Hat Ansible Automation Platform ドキュメントの 新しいユーザーおよびジョブテンプレートの既存の認証情報へ の追加 を参照してください。
新しいインベントリーを追加します。詳細は、Red Hat Ansible Automation Platform ドキュメント の 新しいインベントリーの追加 を参照し てください。
新規インベントリーで、Satellite Server をインベントリーソースとして追加し、以下のインベントリーソースオプションを指定します。
Expand 表5.2 インベントリーソースオプション ソース Red Hat Satellite 6 認証情報
Satellite Server 用に作成した認証情報
上書き
選択
変数の上書き
選択
起動時の更新
選択
キャッシュのタイムアウト
90
- 追加したソースを同期するようにしてください。
5.2. ホストのプロビジョニングコールバックの設定 リンクのコピーリンクがクリップボードにコピーされました!
Satellite でホストを作成する場合、Ansible Automation Platform を使用して Playbook を実行し、新しく作成したホストを設定できます。これは、Ansible Automation Platform では プロビジョニングコールバック と呼ばれます。
プロビジョニングコールバック関数は、プロビジョニングプロセスの一部として Ansible Automation Platform から Playbook の実行をトリガーします。Playbook は、プロビジョニングプロセスの後にホストを設定します。
プロビジョニングコールバックの詳細は、Red Hat Ansible Automation Platform ドキュメントの プロ ビジョニングコール バック を参照してください。
Satellite Server の Kickstart Default テンプレートおよび Kickstart Default Finish テンプレートには、以下の 3 つのスニペットが含まれます。
-
ansible_provisioning_callback -
ansible_tower_callback_script -
ansible_tower_callback_service
ホストまたはホストグループにパラメーターを追加して、新規作成されたホストでの Ansible Playbook の実行にスニペットが使用可能な認証情報を指定できます。
前提条件
プロビジョニングコールバックを設定する前に、Satellite を Ansible Automation Platform の動的インベントリーとして追加する必要があります。詳細は、Satellite と Ansible Automation Platform の統合 を参照し てください。
Ansible Automation Platform Web UI では、次のタスクを完了する必要があります。
- 新規ホスト向けに、マシンの認証情報を作成します。Satellite で作成したホストに割り当てる予定の認証情報に、同じパスワードを入力するようにしてください。詳細は、Red Hat Ansible Automation Platform ドキュメント の ユーザー認証情報の管理 を参照してください。
- プロジェクトを作成します。詳細は、Red Hat Ansible Automation Platform ドキュメントの プロジェクト を参照してください。
- ジョブテンプレートをプロジェクトに追加します。ジョブテンプレートで、プロビジョニングコールバックを有効にし、ホストの設定キーを生成して、ジョブテンプレートの template_ID をメモする必要があります。詳細は、Red Hat Ansible Automation Platform ドキュメントの ジョブテンプレート を参照してください。
手順
- Satellite Web UI で、設定 > ホストグループ に移動します。
- ホストグループを作成するか、既存のホストグループを編集します。
- ホストグループウィンドウで パラメーター タブをクリックします。
- パラメーターの追加 をクリックします。
新規パラメーターごとに、以下の情報を入力します。
Expand 表5.3 ホストパラメーター 名前 値 説明 ansible_tower_provisioningtrue
プロビジョニングコールバックを有効にします。
ansible_tower_fqdnaap.example.com
Ansible Automation Platform の完全修飾ドメイン名(FQDN)。
httpsは Satellite によって追加されるため、追加しないでください。ansible_job_template_idtemplate_ID
テンプレートの URL で確認できるプロビジョニングテンプレートの ID (
/templates/job_template/5)。ansible_host_config_keyconfig_KEY
ジョブテンプレートが Ansible Automation Platform で生成するホスト設定キー。
- Submit をクリックします。
- ホストグループを使用してホストを作成します。
新規ホストで、以下のコマンドを入力して、
ansible-callbackサービスを開始します。systemctl start ansible-callback
# systemctl start ansible-callbackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規ホストで、以下のコマンドを入力して、
ansible-callbackサービスのステータスを出力します。systemctl status ansible-callback
# systemctl status ansible-callbackCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロビジョニングコールバックが正しく設定されていると、以下の出力が返ります。
SAT_host systemd[1]: Started Provisioning callback to Ansible Automation Platform...
SAT_host systemd[1]: Started Provisioning callback to Ansible Automation Platform...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手動でのプロビジョニングコールバック
プロビジョニングコールバック URL とホストからのホスト設定キーを使用して、Ansible Automation Platform を呼び出すことができます。
curl -k -s --data curl --insecure --data host_config_key=my_config_key \ https://aap.example.com/api/v2/job_templates/8/callback/
# curl -k -s --data curl --insecure --data host_config_key=my_config_key \ https://aap.example.com/api/v2/job_templates/8/callback/Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロビジョニングコールバック URL の入力時には、
httpsを使用するようにしてください。
これにより、ホストに対して、テンプレートで指定した Playbook の実行がトリガーされます。
第6章 ジョブテンプレートの例および拡張 リンクのコピーリンクがクリップボードにコピーされました!
このセクションは、要件に合わせたジョブテンプレートの修正、カスタマイズ、および拡張に役立つ参照情報として使用できます。
6.1. ジョブテンプレートのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
ジョブテンプレートの作成時に、テンプレートエディターフィールドで既存のテンプレートを追加できます。こうすることで、テンプレートを組み合わせたり、一般的なテンプレートからより具体的なテンプレートを作成したりできます。
次のテンプレートは、クライアントに nginx サービスをインストールして開始するためのデフォルトのテンプレートを組み合わせたものです。
<%= render_template 'Package Action - SSH Default', :action => 'install', :package => 'nginx' %> <%= render_template 'Service Action - SSH Default', :action => 'start', :service_name => 'nginx' %>
<%= render_template 'Package Action - SSH Default', :action => 'install', :package => 'nginx' %>
<%= render_template 'Service Action - SSH Default', :action => 'start', :service_name => 'nginx' %>
上記のテンプレートはレンダリングされるテンプレートのパラメーター値を直接指定します。ユーザーがジョブ実行時にレンダリングされたテンプレートへの入力を定義できるようにする input() メソッドを使用することもできます。たとえば、以下の構文を使用できます。
<%= render_template 'Package Action - SSH Default', :action => 'install', :package => input("package") %>
<%= render_template 'Package Action - SSH Default', :action => 'install', :package => input("package") %>
上記のテンプレートを使用して、レンダリングされたテンプレートからパラメーター定義をインポートする必要があります。これを行うには、ジョブ タブに移動して 外部入力セットを追加 をクリックし、ターゲットテンプレート リストで、レンダリングされたテンプレートを選択します。すべてのパラメーターをインポートするか、コンマ区切りのリストを指定することができます。
6.2. デフォルトのジョブテンプレートカテゴリー リンクのコピーリンクがクリップボードにコピーされました!
| ジョブテンプレートのカテゴリー | 説明 |
|---|---|
| Packages | パッケージ関連のアクションを実行するためのテンプレートです。デフォルトで、インストール、更新、および削除アクションが含まれています。 |
| Puppet | ターゲットホストで Puppet ホストを実行するためのテンプレートです。 |
| Power | パワー関連のアクションを実行するためのテンプレートです。デフォルトで、再起動およびシャットダウンアクションが含まれます。 |
| Commands | リモートホストでカスタムコマンドを実行するためのテンプレートです。 |
| Services | サービス関連のアクションを実行するためのテンプレートです。デフォルトで、開始、停止、再起動、およびステータスアクションが含まれます。 |
| Katello | コンテンツ関連のアクションを実行するためのテンプレートです。これらのテンプレートは主として Satellite Web UI の各種の場所 (たとえば、コンテンツホストの一括操作のための UI など) で使用されますが、エラータのインストールなどの各種操作を実行するために個別に使用できます。 |
6.3. restorecon テンプレートの例 リンクのコピーリンクがクリップボードにコピーされました!
この例は、Run Command - restorecon というテンプレートを作成する方法を示します。これは、ターゲットホストで選択したディレクトリー内の全ファイルに対して、デフォルトの SELinux コンテキストを復元します。
手順
- Satellite Web UI で、Hosts > Templates > Job templates に移動します。
- 新規ジョブテンプレート をクリックします。
名前 フィールドに Run Command - restorecon と入力します。デフォルト を選択して、テンプレートをすべての組織で利用できるようにします。以下のテキストをテンプレートエディターに追加します。
restorecon -RvF <%= input("directory") %>restorecon -RvF <%= input("directory") %>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <%= input("directory") %>の文字列は、ジョブの呼び出し時にユーザー定義のディレクトリーに置き換えられます。-
ジョブ タブで、ジョブカテゴリー を
Commandsに設定します。 -
入力を追加 をクリックして、ジョブのカスタマイズを可能にします。名前 フィールドに
directoryと入力します。入力する名前は、テンプレートエディターで指定した値と一致している必要があります。 - 必須 をクリックし、ユーザーがパラメーターを指定しなければコマンドが実行しないようにします。
-
入力タイプ リストから ユーザー入力 を選択します。ジョブの呼び出し中に表示する説明を入力します (例:
Target directory for restorecon)。 - Submit をクリックします。詳細は、ホストの管理 の 複数のホストで restorecon テンプレートを実行する を参照してください。
6.4. restorecon テンプレートのレンダリング リンクのコピーリンクがクリップボードにコピーされました!
この例では、restorecon テンプレートの例 で作成した Run command - restorecon テンプレートから派生したテンプレートを作成する方法を示します。このテンプレートは、ジョブ実行時にユーザー入力を必要しません。ターゲットホストの /home/ ディレクトリー配下にあるすべてのファイルの SELinux コンテキストを復元します。
ジョブテンプレートの設定 の説明に従って新しいテンプレートを作成し、テンプレートエディターで次の文字列を指定します。
<%= render_template("Run Command - restorecon", :directory => "/home") %>
<%= render_template("Run Command - restorecon", :directory => "/home") %>
6.5. 複数のホストで restorecon テンプレートを実行する リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、restorecon テンプレートの例 で作成したテンプレートに基づいて、複数のホストでジョブを実行する方法を示します。このジョブは、/home/ ディレクトリー内にある全ファイルの SELinux コンテキストを復元します。
手順
- Satellite Web UI で、Monitor > Jobs に移動し、Run job をクリックします。
- Job category として Commands を選択し、Job template として Run Command - restorecon を選択して、Next をクリックします。
- ジョブを実行するホストを選択します。ホストを選択しなかった場合、現在のコンテキストで表示されているすべてのホストでジョブが実行されます。
-
directory フィールドに、
/homeなどのディレクトリーを指定し、Next をクリックします。 - オプション: ジョブの詳細設定を行うには、Advanced fields に入力します。詳細設定の詳細は、「ジョブウィザードの詳細設定」 を参照してください。詳細設定の入力が完了したら、または入力が必要がない場合は、Next をクリックします。
ジョブの時間をスケジュールします。
- ジョブをすぐに実行するには、事前に選択されている Immediate execution をそのままにしておきます。
- ジョブを将来実行するには、Future execution を選択します。
- ジョブを定期的に実行するには、Recurring execution を選択します。
オプション: 将来または定期的な実行を選択した場合は、Query type を選択します。それ以外の場合は、Next をクリックします。
- Static query を選択すると、指定したリストのホストでジョブが実行されます。
Dynamic query を選択すると、ジョブを実行する直前にホストのリストが評価されます。何らかのフィルターに基づいてホストのリストを入力した場合、そのフィルターを最初に使用したときとは異なる結果が得られることがあります。
クエリーの種類を選択したら、Next をクリックします。
オプション: 将来または定期的な実行を選択した場合は、追加の詳細を入力します。
- Future execution の場合は、Starts at に開始日時を入力します。また、Starts before の日時を選択することもできます。その時刻までにジョブを開始できない場合、ジョブはキャンセルされます。
Recurring execution の場合は、開始日時、頻度、および定期的なジョブを終了する条件を選択します。定期的なジョブは、終了しない、特定の時間に終了させる、または指定した回数繰り返した後に終了させることができます。また、ジョブを追跡するための特別なラベルである Purpose を追加することもできます。特定の目的を持つアクティブなジョブは、一度に 1 つしか存在できません。
必要な情報を入力したら、Next をクリックします。
- ジョブの詳細を確認します。ジョブウィザードの任意の部分に戻り、情報を編集することもできます。
- Submit をクリックしてジョブの実行をスケジュールします。
6.6. テンプレートに電源関連のアクションを組み込む リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、再起動などの電源関連のアクションを実行するためのジョブテンプレートを設定する方法を示します。この手順は、Satellite が再起動時に切断の例外をエラーとして解釈するのを防ぐため、ジョブのリモート実行が正常に機能します。
ジョブテンプレートの設定 の説明に従って新しいテンプレートを作成し、テンプレートエディターで次の文字列を指定します。
<%= render_template("Power Action - SSH Default", :action => "restart") %>
<%= render_template("Power Action - SSH Default", :action => "restart") %>