D.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 %>
Hammer を使用してテンプレートをインポートおよびエクスポートすることもできます。詳細は、Hammer Cli Guide の Provisioning Templates を参照してください。
D.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 コマンドに追加します。
D.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\"}"