付録F Git を使用したテンプレートの同期
Red Hat Satellite 6 は、Satellite Server と、Git リポジトリーまたはローカルディレクトリーとの間で、ジョブテンプレート、プロビジョニングテンプレート、およびパーティションテーブルテンプレートの同期を有効にします。
Git リポジトリーまたはローカルディレクトリーと、Satellite Server との間でテンプレートを同期するのはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat サービスレベルアグリーメント (SLA) では完全にサポートされていません。これらは、機能的に完全でない可能性があり、実稼働環境での使用を目的とはしていませんが、近々発表予定のプロダクトイノベーションをリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。
このセクションでは、以下のワークフローを説明します。
- TemplateSync プラグインのインストールおよび設定
- タスクのエクスポートおよびインポートの実行
F.1. TemplateSync プラグインの有効化
Satellite Server でプラグインの有効化:
# satellite-installer --enable-foreman-plugin-templates
- プラグインが適切にインストールされていることを確認するには、管理 > 設定 に TemplateSync メニューがあることを確認します。
F.2. TemplateSync プラグインの設定
管理 > 設定 > TemplateSync に移動して、プラグインを設定します。以下の表は、属性の動作を説明します。一部の属性は、タスクのインポートまたはエクスポートにのみ使用されます。
パラメーター | API パラメーター名 | インポートの意味 | エクスポートの意味 |
---|---|---|---|
関連付け |
許可される値: |
OS、組織、およびロケーションベースのメタデータへのテンプレートの関連付け |
該当なし |
ブランチ |
|
Git リポジトリーで、読み取るデフォルトブランチを指定します。 |
Git リポジトリーで、書き込むデフォルトブランチを指定します。 |
ディレクトリー名 |
|
リポジトリー下で、読み込むサブディレクトリーを指定します。 |
リポジトリー下で、書き込むサブディレクトリーを指定します。 |
フィルター |
|
正規表現に一致する名前を持つテンプレートだけをインポートします。 |
正規表現に一致する名前を持つテンプレートだけをエクスポートします。 |
強制インポート |
|
インポートしたテンプレートで、ロックされている同じ名前のテンプレートを上書きします。 |
該当なし |
メタデータエクスポートモード |
許可される値: |
該当なし |
エクスポートする際にメタデータが処理される方法を定義します。
|
否定 |
許可される値: |
フィルター属性を無視するテンプレートをインポートします。 |
フィルター属性を無視するテンプレートをエクスポートします。 |
接頭辞 |
|
テンプレート名は接頭辞で開始しないため、指定した文字列をテンプレートの頭に追加します。 |
該当なし |
リポジトリー |
|
同期するリポジトリーへのパスを定義します。 |
エクスポートするリポジトリーへのパスを定義します。 |
詳細 |
許可される値: |
このアクションについて、詳細なメッセージをログに記録します。 |
該当なし |
F.3. テンプレートのインポートおよびエクスポート
タスクのインポートおよびエクスポートは、一連の API コールを介して利用できます。API コールは、ロールベースのアクセスコントロールシステムを使用し、これによりどのユーザーもタスクを実行できます。TemplateSync プラグインにより、Git リポジトリーまたはローカルディレクトリーで同期できます。
前提条件
インポートしたテンプレートが Satellite Web UI に表示されるようにするには、各テンプレートに、テンプレートが属するロケーションおよび組織が含まれている必要があります。これは、すべてのタイプのテンプレートタイプに適用されます。テンプレートをインポートする前に、以下のセクションをテンプレートに追加します。
<%# kind: provision name: My Kickstart File oses: - RedHat 7 - RedHat 6 locations: - First Location - Second Location organizations: - Default Organization - Extra Organization %>
F.3.1. Git リポジトリーでテンプレートの同期
- SSH 認証 (gitosis、gitolite、git デーモンなど) を使用する Git サーバーを設定します。
TemplateSync タブで TemplateSync プラグイン設定を設定します。
- Branch 設定を変更して、Git サーバーへのターゲットブランチに一致します。
-
Git リポジトリーに一致するように、Repo 設定を変更します。たとえば、
git@git.example.com/templates.git
に置いたリポジトリーに対して、設定をssh://git@git.example.com/templates.git
に設定します。
Foreman ユーザーとして Git SSH ホストキーを許可します。
# sudo -u foreman ssh git.example.com
SSH 接続が成功していないため、出力に
Permission denied, please try again.
メッセージが表示されることが期待されます。SSH キーペアがない場合は作成します。パスフレーズは指定しないでください。
# sudo -u foreman ssh-keygen
-
Satellite の公開キーを使用して Git サーバーを設定します。これは、
/usr/share/foreman/.ssh/id_rsa.pub
に保存されます。 Satellite Server から、TemplateSync メニューに指定した Git リポジトリーにテンプレートをエクスポートします。
$ curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -u login:password \ -k https://satellite.example.com/api/v2/templates/export \ -X POST {"message":"Success"}
コンテンツを変更したら、テンプレートを Satellite Server にインポートします。
$ curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -u login:password \ -k https://satellite.example.com/api/v2/templates/import \ -X POST {“message”:”Success”}
Satellite が提供するテンプレートがロックされ、デフォルトではインポートできません。この動作を上書きするには、TemplateSync メニューの
Force import
設定をyes
に変更するか、force
パラメーター-d '{ "force": "true" }’
を import コマンドに追加します。
F.3.2. ローカルディレクトリー
ローカルディレクトリーでリビジョン管理システムリポジトリーを設定した場合は、テンプレートをローカルディレクトリーと同期すると便利です。つまり、テンプレートを編集し、ディレクトリーで編集履歴を追跡できます。テンプレートの編集後に変更を Satellite Server に同期します。
テンプレートを保存するディレクトリーを作成し、適切なパーミッションおよび 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
-
TemplateSync タブで Repo 設定を変更し、エクスポートディレクトリー
/usr/share/templates_dir/
に一致させます。 Satellite Server からローカルディレクトリーにテンプレートをエクスポートします。
$ curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -u login:password \ -k https://satellite.example.com/api/v2/templates/export \ -X POST \ {"message":"Success"}
コンテンツを変更したら、テンプレートを Satellite Server にインポートします。
$ curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -u login:password \ -k https://satellite.example.com/api/v2/templates/import \ -X POST {“message”:”Success”}
Satellite が提供するテンプレートがロックされ、デフォルトではインポートできません。この動作を上書きするには、TemplateSync メニューの
Force import
設定をyes
に変更するか、force
パラメーター-d '{ "force": "true" }’
を import コマンドに追加します。
-d
パラメーターを使用して、リクエストでデフォルトの API 設定を上書きします。以下の例では、git.example.com/templates
リポジトリーにテンプレートをエクスポートします。
$ curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -u login:password \ -k https://satellite.example.com/api/v2/templates/export \ -X POST \ -d "{\"repo\":\"git.example.com/templates\"}"
F.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
高度なオプションの一覧は、git-config
の man ページを参照します。
F.5. プラグインのアンインストール
アンインストール後にエラーを回避するには、以下を行います。
Satellite インストーラーを使用するプラグインを無効にします。
# satellite-installer --no-enable-foreman-plugin-templates
プラグインのカスタムデータを削除します。このコマンドは、作成したテンプレートには影響しません。
# foreman-rake templates:cleanup
プラグインをアンインストールします。
# yum remove tfm-rubygem-foreman_templates