第16章 カスタム Puppet コンテンツの管理

Satellite で、Puppet モジュールを使用してホストの状態設定を組み込む場合は、Puppet モジュールが状態設定を組み込むのに使用するリポジトリーで、カスタム製品を作成します。

16.1. カスタム Puppet リポジトリーの作成

カスタム Puppet モジュールリポジトリーを作成する手順は、リポジトリー作成時に "strong">puppet タイプを選択することを除き、カスタムコンテンツの作成手順と同じです。製品を作成してから、カスタムリポジトリーを追加する必要があります。

手順

  1. Satellite Web UI で、コンテンツ > 製品 に移動し、使用する製品をクリックします。
  2. リポジトリーの作成 をクリックします。
  3. 名前 フィールドで、リポジトリーの名前を入力します。Red Hat Satellite 6 では、名前 に入力した内容に基づいて ラベル フィールドに値が自動的に入力されます。
  4. タイプ の一覧から puppet を選択します。
  5. URL フィールドに、ソースとして使用する外部リポジトリーの URL を入力します。Puppet モジュールの同期にはリポジトリーソースを使用できます。
  6. 保存をクリックします。

CLI をご利用の場合

  1. 以下のコマンドを実行して Puppet モジュールリポジトリーを作成します。

    # hammer repository create \
    --name "PostgreSQL Puppet Modules" \
    --content-type "puppet" \
    --product "PostgreSQL" \
    --organization "My_Organization"

16.2. Puppet モジュールの個別管理

RPM コンテンツと Puppet モジュールの両方が含まれるカスタム製品を作成して、カスタム RPM コンテンツを使用するサーバーをインストールして設定する場合には、「カスタム Puppet リポジトリーの作成」の手順を使用してから、以下の手順に従い、Puppet モジュールをアップロードします。

カスタム RPM のサポート

Red Hat では、Puppet Forge からのモジュールをサポートしていません。これらのモジュールに問題がある場合は、モジュール開発者に連絡してください。

前提条件

  1. https://forge.puppetlabs.com/puppetlabs/postgresql など、Puppet Forge の Web サイトから、使用するモジュールをダウンロードしておく。
  2. Web ブラウザーで、download latest tar.gz をクリックしてローカルのファイルシステムに保存しておく。

手順

  1. Satellite Web UI で、コンテンツ > 製品 に移動し、管理する Puppet リポジトリーが含まれる製品を選択します。
  2. リポジトリーウィンドウで、新しい Puppet リポジトリーをクリックすると、そのリポジトリーの詳細ページが表示されます。
  3. Puppet モジュールのアップロード エリアに移動し、参照 をクリックします。新たにダウンロードして抽出された Puppet モジュールを選択し、アップロード をクリックします。

Puppet モジュールを管理し、製品から削除するには、以下の手順を行います。

  1. Puppet モジュールリポジトリーのウィンドウで、ウィンドウの右上の コンテンツ数 エリアに移動します。Puppet モジュール 行で、Puppet モジュールに表示されている数値をクリックします。
  2. Puppet モジュールリポジトリーウィンドウの Puppet モジュールの管理 で、管理するモジュールを選択して、アクションの選択 をクリックし、アクションを実行するか、Puppet モジュールの削除 を選択します。

CLI をご利用の場合

  1. 以下のコマンドで、使用中の Satellite Server のファイルシステムに Puppet モジュールをコピーします。

    $ scp ~/puppet_module.tar.gz root@satellite.example.com:~/.
  2. Puppet モジュールを Puppet Modules リポジトリーにインポートします。

    # hammer repository upload-content \
    --path ~/puppet_module.tar.gz \
    --name "My Puppet Modules" \
    --organization "My_Organization"

16.3. Puppet リポジトリーの同期

Satellite Server は、アップロードした Puppet モジュールのリポジトリーを作成するだけでなく、完全な Puppet モジュールリポジトリーの同期ができます。この例では、Satellite Server は Puppet Forge リポジトリー全体を同期します。

カスタム RPM のサポート

Red Hat では、Puppet Forge からのモジュールをサポートしていません。モジュールは、同期プロセスのデモのために使用されています。これらのモジュールに問題がある場合は、モジュール開発者に連絡してください。

手順

  1. Satellite Web UI で コンテンツ > 製品 に移動して、製品の作成 をクリックします。
  2. 名前 フィールドで、製品の名前を入力します。Red Hat Satellite 6 では、名前 に入力した内容に基づいて ラベル フィールドに自動的に入力されます。
  3. オプション: GPG キー の一覧から、製品の GPG キーを選択します。
  4. オプション: 同期プラン リストから製品の同期プランを選択します。
  5. 説明フィールドには、製品の説明を入力します。
  6. 保存をクリックします。
  7. リポジトリーの作成 をクリックすると、新しいリポジトリーのフォームが表示されます。
  8. 名前 フィールドに、リポジトリーの名前を入力します。Red Hat Satellite 6 では、名前 に入力した名前をもとに、このフィールドに値が自動的に入力されます。
  9. タイプ の一覧から puppet を選択します。
  10. URL フィールドに、http://forge.puppetlabs.com/ と入力します。
  11. 保存 をクリックします。
  12. 新しい Puppet リポジトリーを選択し、今すぐ同期 をクリックして、Puppet Forge から Satellite Server に全モジュールをインポートします。この処理には時間がかかることがあります。

CLI をご利用の場合

  1. 製品を作成します。

    # hammer product create \
    --name "Puppet Forge" \
    --sync-plan "Example Plan" \
    --description "All modules from Puppet Forge" \
    --organization "My_Organization"
  2. Puppet Forge リポジトリーを作成します。

    # hammer repository create \
    --name "Puppet Forge Modules" \
    --content-type "puppet" \
    --product "Puppet Forge" \
    --organization "My_Organization" \
    --url http://forge.puppetlabs.com/
  3. リポジトリーを同期します。

    # hammer repository synchronize \
    --name "Puppet Forge Modules" \
    --product "Puppet Forge" \
    --organization "My_Organization"

Puppet Forge リポジトリーには数千のモジュールが含まれてるため、同期には時間がかかる場合があります。

16.4. Git リポジトリーからの Puppet Modules の同期

Red Hat Satellite 6 には pulp-puppet-module-builder と呼ばれるユーティリティーが含まれており、これは pulp-puppet-tools RPM から他のシステムにインストールできます。このツールは Git リポジトリーをチェックアウトし、全モジュールをビルドして、それらを Satellite 6 が同期できる構造で公開します。一般的な方法の 1 つは、Satellite Server 上でこのユーティリティーを実行し、ローカルディレクトリーに公開して、そのディレクトリーに対して同期するというものです。以下は例となります。

# mkdir /modules
# chmod 755 /modules
# pulp-puppet-module-builder \
--output-dir=/modules \
--url=git@mygitserver.com:mymodules.git \
--branch=develop

この例では、Git リポジトリーの develop ブランチを git@mygitserver.com:mymodules.git からチェックアウトし、/modules に公開します。このディレクトリーを Satellite Server の新規リポジトリーの URL (file:///modules) として追加します。

リモート HTTP サーバー上の Puppet モジュールの公開

リモートの HTTP サーバー上にモジュールを公開する場合でも同じプロセスを実行します。たとえば、Puppet モジュールを公開する標準 Web ホストとして webserver.example.com を使用します。

# mkdir /var/www/html/modules/
# chmod 755 /var/www/html/modules/
# pulp-puppet-module-builder \
--output-dir=/var/www/html/modules/ \
--url=git@mygitserver.com:mymodules.git \
--branch=develop

Satellite Server では、リポジトリーの URL を http://webserver.example.com/modules/ に設定します。

Web UI を使用した Git リポジトリーからの Puppet モジュールの同期

以下の手順を使用して、Git リポジトリーから Puppet モジュールを同期します。

手順

  1. カスタム製品を作成し、リポジトリーの作成 をクリックします。
  2. タイプ の一覧から puppet を選択します。
  3. URL フィールドに、ソースとして使用する外部 Git リポジトリーの URL を file:///modules の形式で入力します。

CLI をご利用の場合

  1. Puppet Forge リポジトリーを作成します。

    # hammer repository create \
    --name "Modules from Git" \
    --content-type "puppet" \
    --product "MyProduct" \
    --organization "My_Organization" \
    --url file:///modules