付録F Git を使用したテンプレートの同期

Red Hat Satellite 6 は、Satellite Server と、Git リポジトリーまたはローカルディレクトリーとの間で、ジョブテンプレート、プロビジョニングテンプレート、およびパーティションテーブルテンプレートの同期を有効にします。

注記

Git リポジトリーまたはローカルディレクトリーと、Satellite Server との間でテンプレートを同期するのはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat サービスレベルアグリーメント (SLA) では完全にサポートされていません。これらは、機能的に完全でない可能性があり、実稼働環境での使用を目的とはしていませんが、近々発表予定のプロダクトイノベーションをリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。

このセクションでは、以下のワークフローを説明します。

  • TemplateSync プラグインのインストールおよび設定
  • タスクのエクスポートおよびインポートの実行

F.1. TemplateSync プラグインの有効化

  1. Satellite Server でプラグインの有効化:

    # satellite-installer --enable-foreman-plugin-templates
  2. プラグインが適切にインストールされていることを確認するには、管理 > 設定TemplateSync メニューがあることを確認します。

F.2. TemplateSync プラグインの設定

管理 > 設定 > TemplateSync に移動して、プラグインを設定します。以下の表は、属性の動作を説明します。一部の属性は、タスクのインポートまたはエクスポートにのみ使用されます。

表F.1 テンプレートのプラグイン設定の同期

パラメーターAPI パラメーター名インポートの意味エクスポートの意味

関連付け

associate

許可される値: alwaysnewnever

OS、組織、およびロケーションベースのメタデータへのテンプレートの関連付け

該当なし

ブランチ

branch

Git リポジトリーで、読み取るデフォルトブランチを指定します。

Git リポジトリーで、書き込むデフォルトブランチを指定します。

ディレクトリー名

dirname

リポジトリー下で、読み込むサブディレクトリーを指定します。

リポジトリー下で、書き込むサブディレクトリーを指定します。

フィルター

filter

正規表現に一致する名前を持つテンプレートだけをインポートします。

正規表現に一致する名前を持つテンプレートだけをエクスポートします。

強制インポート

force

インポートしたテンプレートで、ロックされている同じ名前のテンプレートを上書きします。

該当なし

メタデータエクスポートモード

metadata_export_mode

許可される値: refreshkeepremove

該当なし

エクスポートする際にメタデータが処理される方法を定義します。

  • 更新 — テンプレートコンテンツから既存のメタデータを削除して、現在の割り当ておよび属性をベースにしたメタデータを新たに生成します。
  • 維持: 既存のメタデータを持続します。
  • 削除: メタデータがないテンプレートをエクスポートします。メタデータを手動で追加する場合は便利です。

否定

negate

許可される値: truefalse

フィルター属性を無視するテンプレートをインポートします。

フィルター属性を無視するテンプレートをエクスポートします。

接頭辞

prefix

テンプレート名は接頭辞で開始しないため、指定した文字列をテンプレートの頭に追加します。

該当なし

リポジトリー

repo

同期するリポジトリーへのパスを定義します。

エクスポートするリポジトリーへのパスを定義します。

詳細

verbose

許可される値: truefalse

このアクションについて、詳細なメッセージをログに記録します。

該当なし

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 リポジトリーでテンプレートの同期

  1. SSH 認証 (gitosis、gitolite、git デーモンなど) を使用する Git サーバーを設定します。
  2. TemplateSync タブで TemplateSync プラグイン設定を設定します。

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

    # sudo -u foreman ssh git.example.com

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

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

    # sudo -u foreman ssh-keygen
  5. Satellite の公開キーを使用して Git サーバーを設定します。これは、/usr/share/foreman/.ssh/id_rsa.pub に保存されます。
  6. 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"}
  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 コマンドに追加します。

F.3.2. ローカルディレクトリー

ローカルディレクトリーでリビジョン管理システムリポジトリーを設定した場合は、テンプレートをローカルディレクトリーと同期すると便利です。つまり、テンプレートを編集し、ディレクトリーで編集履歴を追跡できます。テンプレートの編集後に変更を Satellite Server に同期します。

  1. テンプレートを保存するディレクトリーを作成し、適切なパーミッションおよび 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
  2. TemplateSync タブで Repo 設定を変更し、エクスポートディレクトリー /usr/share/templates_dir/ に一致させます。
  3. 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"}
  4. コンテンツを変更したら、テンプレートを 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. プラグインのアンインストール

アンインストール後にエラーを回避するには、以下を行います。

  1. Satellite インストーラーを使用するプラグインを無効にします。

    # satellite-installer --no-enable-foreman-plugin-templates
  2. プラグインのカスタムデータを削除します。このコマンドは、作成したテンプレートには影響しません。

    # foreman-rake templates:cleanup
  3. プラグインをアンインストールします。

    # yum remove tfm-rubygem-foreman_templates