13.3.3. Satellite API を使用したテンプレートの同期

前提条件

  • 各テンプレートに、テンプレートが属するロケーションおよび組織が含まれている必要がある。これは、すべてのタイプのテンプレートタイプに適用されます。テンプレートをインポートする前に、以下のセクションをテンプレートに追加します。

    <%#
    kind: provision
    name: My Kickstart File
    oses:
    - RedHat 7
    - RedHat 6
    locations:
    - First Location
    - Second Location
    organizations:
    - Default Organization
    - Extra Organization
    %>

手順

  1. SSH 認証を使用するバージョン管理システムを設定します (gitosis、gitolite、git デーモンなど)。
  2. TemplateSync タブで TemplateSync プラグイン設定を設定します。

    1. Branch 設定を変更して、Git サーバーへのターゲットブランチに一致します。
    2. Git リポジトリーに一致するように、Repo 設定を変更します。たとえば、git@git.example.com/templates.git に置いたリポジトリーに対して、設定を ssh://git@git.example.com/templates.git に設定します。
  3. Git SSH ホストキーを foreman ユーザーとして受け取ります。

    # sudo -u foreman ssh git.example.com

    SSH 接続が成功していないため、出力に Permission denied, please try again. メッセージが表示されることが想定されます。

  4. SSH 鍵ペアがない場合は作成します。パスフレーズは指定しないでください。

    # sudo -u foreman ssh-keygen
  5. Satellite の公開鍵を使用してバージョン管理サーバーを設定します。公開鍵は、/usr/share/foreman/.ssh/id_rsa.pub にあります。
  6. Satellite Server から、TemplateSync メニューに指定したバージョン管理リポジトリーにテンプレートをエクスポートします。

    $ 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"}
  7. コンテンツを変更したら、テンプレートを 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 コマンドに追加します。