10.17. テンプレートリポジトリーの同期
Satellite では、Satellite Server とバージョン管理システムまたはローカルディレクトリー間で、ジョブテンプレート、プロビジョニングテンプレート、レポートテンプレート、およびパーティションテーブルテンプレートのリポジトリーを同期できます。本章では、Git リポジトリーをデモ目的で使用します。
このセクションでは、以下のワークフローを説明します。
- TemplateSync プラグインのインストールおよび設定
- タスクのエクスポートおよびインポートの実行
10.17.1. TemplateSync プラグインの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Satellite Server でプラグインを有効化するには、以下のコマンドを入力します。
satellite-installer --enable-foreman-plugin-templates
# satellite-installer --enable-foreman-plugin-templates
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - プラグインが適切にインストールされていることを確認するには、管理 > 設定 に TemplateSync メニューがあることを確認します。
10.17.2. TemplateSync プラグインの設定 リンクのコピーリンクがクリップボードにコピーされました!
Satellite Web UI で、管理 > 設定 > TemplateSync に移動して、プラグインを設定します。以下の表は、属性の動作を説明しています。一部の属性は、タスクのインポートまたはエクスポートにのみ使用される点にご留意ください。
パラメーター | API パラメーター名 | インポートの意味 | エクスポートの意味 |
---|---|---|---|
関連付け |
許可される値: | OS、組織、およびロケーションベースのメタデータへのテンプレートの関連付け | 該当なし |
ブランチ |
| Git リポジトリーで、読み取るデフォルトブランチを指定します。 | Git リポジトリーで、書き込むデフォルトブランチを指定します。 |
ディレクトリー名 |
| リポジトリー下で、読み込むサブディレクトリーを指定します。 | リポジトリー下で、書き込むサブディレクトリーを指定します。 |
フィルター |
| 正規表現に一致する名前を持つテンプレートだけをインポートします。 | 正規表現に一致する名前を持つテンプレートだけをエクスポートします。 |
強制インポート |
| インポートしたテンプレートで、ロックされている同じ名前のテンプレートを上書きします。 | 該当なし |
テンプレートのロック |
| 強制インポート が有効になっていない限り、同じ名前の新しいテンプレートをインポートするときに既存のテンプレートを上書きしないでください。 | 該当なし |
メタデータエクスポートモード |
許可される値: | 該当なし | エクスポートする際にメタデータが処理される方法を定義します。
|
否定 |
許可される値: | フィルター属性を無視するテンプレートをインポートします。 | フィルター属性を無視するテンプレートをエクスポートします。 |
接頭辞 |
| テンプレート名は接頭辞で開始しないため、指定した文字列をテンプレートの頭に追加します。 | 該当なし |
リポジトリー |
| 同期するリポジトリーへのパスを定義します。 | エクスポートするリポジトリーへのパスを定義します。 |
詳細 |
許可される値: | このアクションについて、詳細なメッセージをログに記録します。 | 該当なし |
10.17.3. テンプレートのインポートおよびエクスポート リンクのコピーリンクがクリップボードにコピーされました!
Satellite Web UI、Hammer CLI、または Satellite API を使用して、テンプレートをインポートおよびエクスポートできます。Satellite API 呼び出しは、ロールベースのアクセス管理システムを使用して、任意のユーザーでタスクの実行が可能になります。Git などのバージョン管理システム、またはローカルディレクトリーとテンプレートを同期できます。
10.17.3.1. テンプレートのインポート リンクのコピーリンクがクリップボードにコピーされました!
任意のリポジトリーからテンプレートをインポートできます。/tmp/dir
、git://example.com
、https://example.com
、ssh://example.com
などの異なるプロトコルを使ってリポジトリーにポイントさせることもできます。
前提条件
各テンプレートに、テンプレートが属するロケーションおよび組織が含まれている必要がある。これは、すべてのタイプのテンプレートタイプに適用されます。テンプレートをインポートする前に、以下のセクションをテンプレートに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
- Satellite Web UI で、ホスト > テンプレートの同期 に移動します。
- インポート をクリックします。
- 各フィールドには、管理 > 設定 > TemplateSync で設定された値が入力されます。インポートするテンプレートに従って値を変更します。各フィールドの詳細は、「TemplateSync プラグインの設定」 を参照してください。
- Submit をクリックします。
Satellite Web UI はインポートのステータスを表示します。ステータスは永続的ではありません。ステータスページを離れると、ページに戻ることはできません。
CLI 手順
リポジトリーからテンプレートをインポートするには、以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow テンプレートのインデックス化と管理には、
--prefix
を使ってテンプレートにカテゴリーを設定することができます。大型リポジトリーから特定のテンプレートを選択するには、--filter
を使ってインポートするテンプレートのタイトルを定義します。たとえば、--filter '.*Ansible Default$'
とすると、各種 Ansible Default テンプレートをインポートします。
10.17.3.2. テンプレートのエクスポート リンクのコピーリンクがクリップボードにコピーされました!
テンプレートは、Git リポジトリーなどのバージョン管理サーバーにエクスポートできます。
手順
- Satellite Web UI で、ホスト > テンプレートの同期 に移動します。
- エクスポート をクリックします。
- 各フィールドには、管理 > 設定 > TemplateSync で設定された値が入力されます。エクスポートするテンプレートに従って値を変更します。各フィールドの詳細は、「TemplateSync プラグインの設定」 を参照してください。
- Submit をクリックします。
Satellite Web UI はエクスポートのステータスを表示します。ステータスは永続的ではありません。ステータスページを離れると、ページに戻ることはできません。
CLI 手順
Git リポジトリーのローカルコピーのクローンを作成します。
git clone https://github.com/theforeman/community-templates /custom/templates
$ git clone https://github.com/theforeman/community-templates /custom/templates
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドで、ローカルディレクトリーの所有者を
foreman
ユーザーに変更し、SELinux コンテキストを変更します。chown -R foreman:foreman /custom/templates chcon -R -t httpd_sys_rw_content_t /custom/templates
# chown -R foreman:foreman /custom/templates # chcon -R -t httpd_sys_rw_content_t /custom/templates
Copy to Clipboard Copied! Toggle word wrap Toggle overflow テンプレートをローカルリポジトリーにエクスポートするには、以下のコマンドを実行します。
hammer export-templates --organization 'Default Organization' --repo /custom/templates
hammer export-templates --organization 'Default Organization' --repo /custom/templates
Copy to Clipboard Copied! Toggle word wrap Toggle overflow テンプレートをエクスポートする際に、バックエンドサービスが systemd プライベートの一時ディレクトリーで実行されるため、
/tmp
や/var/tmp
などの一時ディレクトリーは回避してください。
10.17.3.3. Satellite API を使用したテンプレートの同期 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
各テンプレートに、テンプレートが属するロケーションおよび組織が含まれている必要がある。これは、すべてのタイプのテンプレートタイプに適用されます。テンプレートをインポートする前に、以下のセクションをテンプレートに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
- SSH 認証を使用するバージョン管理システムを設定します (gitosis、gitolite、git デーモンなど)。
TemplateSync タブで TemplateSync プラグイン設定を設定します。
- Branch 設定を変更して、Git サーバーへのターゲットブランチに一致します。
-
Git リポジトリーに一致するように、Repo 設定を変更します。たとえば、
git@git.example.com/templates.git
に置いたリポジトリーに対して、設定をssh://git@git.example.com/templates.git
に設定します。
Git SSH ホストキーを
foreman
ユーザーとして受け取ります。sudo -u foreman ssh git.example.com
# sudo -u foreman ssh git.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSH 接続が成功していないため、出力に
Permission denied, please try again.
メッセージが表示されることが想定されます。SSH 鍵ペアがない場合は作成します。パスフレーズは指定しないでください。
sudo -u foreman ssh-keygen
# sudo -u foreman ssh-keygen
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Satellite の公開鍵を使用してバージョン管理サーバーを設定します。公開鍵は、
/usr/share/foreman/.ssh/id_rsa.pub
にあります。 Satellite Server から、TemplateSync メニューに指定したバージョン管理リポジトリーにテンプレートをエクスポートします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテンツを変更したら、テンプレートを Satellite Server にインポートします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Satellite が提供するテンプレートがロックされ、デフォルトではインポートできない点にご留意ください。この動作を上書きするには、TemplateSync メニューの
Force import
設定をyes
に変更するか、force
パラメーター-d '{ "force": "true" }'
を import コマンドに追加します。
10.17.3.4. Satellite API を使用したローカルディレクトリーとテンプレートの同期 リンクのコピーリンクがクリップボードにコピーされました!
ローカルディレクトリーで、バージョン管理リポジトリーを設定した場合は、テンプレートをローカルディレクトリーと同期すると便利です。これにより、テンプレートを編集し、ディレクトリーで編集履歴を追跡できます。テンプレートの編集後に変更を Satellite Server に同期することも可能です。
前提条件
各テンプレートに、テンプレートが属するロケーションおよび組織が含まれている必要がある。これは、すべてのタイプのテンプレートタイプに適用されます。テンプレートをインポートする前に、以下のセクションをテンプレートに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
テンプレートを保存するディレクトリーを作成し、適切なパーミッションおよび SELinux コンテキストを適用します。
mkdir -p /usr/share/templates_dir/ chown foreman /usr/share/templates_dir/ chcon -t httpd_sys_rw_content_t /usr/share/templates_dir/ -R
# mkdir -p /usr/share/templates_dir/ # chown foreman /usr/share/templates_dir/ # chcon -t httpd_sys_rw_content_t /usr/share/templates_dir/ -R
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
TemplateSync タブで Repo 設定を変更し、エクスポートディレクトリー
/usr/share/templates_dir/
に一致させます。 Satellite Server からローカルディレクトリーにテンプレートをエクスポートします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテンツを変更したら、テンプレートを Satellite Server にインポートします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Satellite が提供するテンプレートがロックされ、デフォルトではインポートできない点にご留意ください。この動作を上書きするには、TemplateSync メニューの
Force import
設定をyes
に変更するか、force
パラメーター-d '{ "force": "true" }'
を import コマンドに追加します。
-d
パラメーターを使用して、リクエストでデフォルトの API 設定を上書きします。以下の例では、git.example.com/templates
リポジトリーにテンプレートをエクスポートします。
10.17.4. 高度な Git 設定 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインで、または .gitconfig
ファイルを編集して、TemplateSync プラグインに追加の Git 設定を実行できます。
自己署名の Git 証明書の同意
Git サーバーで自己署名証明書の認証を使用している場合は、git config http.sslCAPath
コマンドでその証明書を検証します。
たとえば、以下のコマンドを実行して /cert/cert.pem
に保存されている自己署名証明書を確認します。
sudo -u foreman git config --global http.sslCAPath cert/cert.pem
# sudo -u foreman git config --global http.sslCAPath cert/cert.pem
詳細なオプションの一覧は、git-config
の man ページを参照します。
10.17.5. プラグインのアンインストール リンクのコピーリンクがクリップボードにコピーされました!
foreman_templates プラグインを削除した後のエラーを回避するには、以下を実行します。
Satellite インストーラーを使用するプラグインを無効にします。
satellite-installer --no-enable-foreman-plugin-templates
# satellite-installer --no-enable-foreman-plugin-templates
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プラグインのカスタムデータを削除します。このコマンドは、作成したテンプレートには影響しません。
foreman-rake templates:cleanup
# foreman-rake templates:cleanup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プラグインをアンインストールします。
satellite-maintain packages remove foreman-plugin-templates
# satellite-maintain packages remove foreman-plugin-templates
Copy to Clipboard Copied! Toggle word wrap Toggle overflow