第13章 Satellite Server 機能の拡張


Red Hat Satellite Server は、プラグインをインストールし、オーケストレーションと Rails イベントにフックを使用することで、機能拡張が可能です。プラグインは、RPM パッケージとして Red Hat リポジトリーと Foreman リポジトリーから入手できます。

13.1. Satellite プラグイン

Satellite プラグインは以下から入手できます。

  • Red Hat リポジトリー
  • Foreman リポジトリー

Satellite 用のプラグインには通常、RPM パッケージ名に foreman という語が含まれており、Capsule 用のプラグインには、名前に smart_proxy が含まれています。

Red Hat が提供するプラグインは、Satellite CLI から yum コマンドを使用して検索とインストールができます。

アップストリーム の Satellite プラグインは、Foreman リポジトリーで入手できます。Foreman の各リリースには、該当リリース用のプラグインを格納している個別のリポジトリーがあります。

アップストリーム プラグインをインストールするには、Foreman リポジトリーを Satellite で設定する必要があります。設定が完了したら、yum コマンドを使用して Satellite CLI から検索とインストールができます。

Foreman リポジトリーは、http://yum.theforeman.org/plugins から入手できます。

注記

お使いのシステムにある Foreman のバージョンと互換性のあるプラグインをインストールするように注意してください。

yum info または rpm -qi を使用すると、RPM パッケージの説明を表示してプラグインを確認することができます。

重要

Red Hat では、Foreman API はサポートしていますが、Foreman リポジトリーからインストールしたプラグインはサポートしていません。

13.1.1. プラグインの検索

Satellite CLI を使って利用可能なプラグインを検索します。

注記

アップストリーム プラグインも検索するには、Foreman リポジトリーを 「Foreman リポジトリーの設定」 の説明に従って設定します。

手順

  • root ユーザーとして yum search を使ってパッケージ名に "-foreman" がつくパッケージを検索します。

    例 - Satellite 用 rubygem プラグインの検索

    # yum search rubygem-foreman
    Loaded plugins: product-id, search-disabled-repos, subscription-manager
    =================== N/S matched: rubygem-foreman ==============================
    tfm-rubygem-foreman-redhat_access.noarch : Foreman engine to access Red Hat knowledge base and manage support cases.
    tfm-rubygem-foreman-tasks.noarch : Tasks support for Foreman with Dynflow integration
    tfm-rubygem-foreman_abrt.noarch : Display reports from Automatic Bug Reporting Tool in Foreman
    tfm-rubygem-foreman_bootdisk.noarch : Create boot disks to provision hosts with Foreman
    出力省略
    Copy to Clipboard Toggle word wrap

13.1.2. プラグインのインストール

Satellite CLI を使用してプラグインをインストールします。

注記

アップストリーム プラグインをインストールするには、Foreman リポジトリーを 「Foreman リポジトリーの設定」 の説明に従って設定します。

手順

  1. yum install を使用して必要なプラグインをインストールします。

    例: tfm-rubygem-foreman_templates プラグインのインストール:

    # yum install tfm-rubygem-foreman_templates
    Copy to Clipboard Toggle word wrap
  2. foreman-maintain サービスを再起動します。

    # foreman-maintain service restart
    Copy to Clipboard Toggle word wrap

インストールされたことを確認するには、yum を使ってインストールされたプラグインを一覧表示します。

  • 例: rubygem-foreman プラグインのインストール確認

    # yum list installed | grep rubygem-foreman | grep foreman
    Copy to Clipboard Toggle word wrap
  • yum を使って Capsule プラグインを一覧表示することもできます。

    # yum list installed | grep proxy
    Copy to Clipboard Toggle word wrap

13.1.3. Foreman リポジトリーの設定

Satellite CLI を使用して Foreman リポジトリーを設定します。

手順

  1. rpm コマンドで Foreman のリリースを確認します。

    $ rpm -q foreman
    foreman-1.7.2.53-1.el7sat.noarch
    Copy to Clipboard Toggle word wrap
  2. rpm 設定ファイルを作成します。

    touch /etc/yum.repos.d/foreman-plugins.repo
    Copy to Clipboard Toggle word wrap
  3. 以下の内容をファイルに追加します。

    [foreman-plugins]
    name=Foreman plugins
    baseurl=http://yum.theforeman.org/plugins/1.10/el_7_/x86_64/
    enabled=1
    gpgcheck=0
    Copy to Clipboard Toggle word wrap

    URL 内のバージョン番号 (上記の 1.10) を必要な Foreman リリース番号で置き換えます。

注記

これらのパッケージは現在 GPG 署名されていません。

foreman プラグインについての情報は、Foreman web サイトの Popular Plugins および List of Plugins セクションを参照してください。

13.2. Foreman フック

Foreman のホストオーケストレーションはフックで拡張することで、追加のタスクを実行できるようになります。Foreman フックを使用すると、ホストの作成時やホストのプロビジョニングの完了時などのオーケストレーションイベントが発生するときに、スクリプトをトリガーできます (どのような実行可能ファイルでも使用できます)。また、フックはスクリプトとともに Foreman オブジェクトの標準的な Rails コールバックに組み込むことができます。

注記

Foreman フックは Satellite のワークフローを変更できるため、Red Hat からサポートを得るためにすべてのフックを削除するよう求められることがあります。また、Foreman フックはアップグレードの前に削除し、Satellite が期待どおり動作していることを確認した後に復元する必要があります。

13.2.1. Foreman フックのインストール

Foreman フックは、デフォルトでインストールされる tfm-rubygem-foreman_hooks パッケージが提供します。パッケージがインストールされ、最新の状態であることを確認するために、rootyum を使用します。

手順

  • yum 使用して foreman フックをインストールします。

    # yum install tfm-rubygem-foreman_hooks
    Loaded plugins: product-id, search-disabled-repos, subscription-manager
    Package tfm-rubygem-foreman_hooks-0.3.9-2.el7sat.noarch already installed and latest version
    Nothing to do
    Copy to Clipboard Toggle word wrap

13.2.2. Foreman フックの作成

Foreman フックは /usr/share/foreman/config/hooks/ に格納されます。

手順

  1. 各 Foreman オブジェクトには 1 つのサブディレクトリーを作成する必要があります (各イベント名には他のサブディレクトリーが作成されます)。Foreman オブジェクトは、ホストまたはネットワークインターフェースである場合があります。フックへのパスは以下のようになります。

    /usr/share/foreman/config/hooks/object/event/hook_script
    Copy to Clipboard Toggle word wrap
  2. たとえば、ホストでオペレーティングシステムのインストールが完了した後にフックをアクティベートするために、以下のコマンドでサブディレクトリーを作成します。

    # mkdir -p /usr/share/foreman/config/hooks/host/managed/before_provision/
    Copy to Clipboard Toggle word wrap
  3. スクリプトをダウンロードし、適切な名前が指定されたディレクトリーがすでに作成されている場合は、以下のように install コマンドを使用して SELinux コンテキストが正しいことを確認します。

    install hook_script /usr/share/foreman/config/hooks/object/event/hook_script
    Copy to Clipboard Toggle word wrap
    • または、イベントサブディレクトリーに直接スクリプトを作成した場合は、root で以下のコマンドを入力して SELinux コンテキストを適用します。

      # restorecon -RvF /usr/share/foreman/config/hooks
      Copy to Clipboard Toggle word wrap

      Red Hat Enterprise Linux 7 での SELinux コンテキストは foreman_hook_t です。スクリプトは制限のある状態で実行されるため、一部のアクションが SELinux によって拒否される場合があることに注意してください。SELinux により拒否されたアクションを確認するには、aureport -a を実行するか、/var/log/audit/audit.log を調べます。

      SELinux の問題のデバッグと audit2allow ユーティリティーの使用の詳細については、以下のトピックを参照してください。

    • Red Hat Enterprise Linux 7 の場合は、Fixing Problems[9] を参照してください。

13.2.3. Foreman フックを作成してロガーコマンドを使用

このフックスクリプトは、Foreman が新しいサーバーをプロビジョニングするたびに追加のログメッセージを作成します。

手順

  1. Satellite Server ベースシステムでディレクトリー構造を作成します。

    # mkdir -p /usr/share/foreman/config/hooks/host/managed/before_provision/
    Copy to Clipboard Toggle word wrap
  2. 以下のようにスクリプトを作成します。

    # vi /usr/share/foreman/config/hooks/host/managed/before_provision/_10__logger.sh
    #!/bin/bash
    logger $1 $2
    Copy to Clipboard Toggle word wrap

    ファイル名 _logger.sh の前の数値の接頭辞 10 により、同じサブディレクトリー内のスクリプトの実行順序が決定されます。必要に応じてこの接頭辞を変更します。

  3. スクリプトの所有者を foreman に変更します。

    # chown foreman:foreman /usr/share/foreman/config/hooks/host/managed/before_provision/_10__logger.sh
    Copy to Clipboard Toggle word wrap
  4. ユーザーによる実行を許可するためにスクリプトのパーミッションを変更します。

    # chmod u+x /usr/share/foreman/config/hooks/host/managed/before_provision/_10__logger.sh
    Copy to Clipboard Toggle word wrap
  5. SELinux コンテキストが /usr/share/foreman/config/hooks ディレクトリー内のすべてのファイルで正しいことを確認します。

    # restorecon -RvF /usr/share/foreman/config/hooks/
    Copy to Clipboard Toggle word wrap
  6. foreman ユーザーが logger コマンドを使用できるようにするために、以下のルールを /etc/sudoers ファイルに追加します。

    # vi /etc/sudoers
    foreman ALL=(ALL) NOPASSWD:/usr/bin/logger
    Copy to Clipboard Toggle word wrap
  7. Satellite サービスを再起動して、フックを登録します。

    # foreman-maintain service restart
    Copy to Clipboard Toggle word wrap

各 Foreman または Rail オブジェクトにはフックを含めることができます。/usr/share/foreman/app/models/ ディレクトリーを確認するか、利用可能なモデルの完全なリストを取得するために、以下のコマンドを入力します。

# foreman-rake console
>
ActiveRecord::Base.descendants.collect(&:name).collect(&:underscore).sort
=> ["audited/adapters/active_record/audit", "compute_resource", "container",
output truncated
Copy to Clipboard Toggle word wrap

このコマンド出力は、Foreman フックで使用されない可能性が高いいくつかの技術的な表 ("active_record" や "habtm" など) も一覧表示します。一般的に使用されるものは以下のとおりです。

  • host
  • report

13.2.4. オーケストレーションイベント

Foreman は、オブジェクトが作成、更新、および破棄された際に、ホストおよびネットワークインターフェース (オブジェクトと呼ばれます) 向けのオーケストレーションタスクをサポートします。これらのタスクは Web UI でユーザーに表示されます。タスクが失敗した場合は、アクションのロールバックが自動的にトリガーされます。オーケストレーションフックには優先度を割り当てることができるため、組み込みオーケストレーション手順の前または後 (たとえば、DNS レコードがデプロイされる前) にオーケストレーションフックを呼び出すことができます。

フックをイベントに追加するには、以下のイベント名を使用します。

  • create
  • update
  • destroy

13.2.5. Rails イベント

(上述したオーケストレーションをサポートする) ホストと NIC 以外のものに対するフックの場合は、標準的な Rails イベントを使用できます。各イベントには "before" フックと "after" フックがあります。提供される最も興味深いイベントは以下のとおりです。

  • after_create
  • before_create
  • after_destroy
  • before_destroy

ホストオブジェクトでは、以下の 2 つの追加コールバックを使用できます。

  • host/managed/after_build は、ホストがビルドモードになると開始されます。
  • host/managed/before_provision は、ホストで OS のインストールが完了すると、開始されます。

Rails イベントの完全なリストについては、Ruby on Rails ActiveRecord::Callbacks[10] ドキュメンテーションの「Constants」を参照してください。

13.2.6. フックの実行

フックは Foreman サーバーのコンテキスト (したがって、通常は foreman ユーザー下) で実行されます。最初の引数は常にイベント名であり、スクリプトを複数のイベントディレクトリーにシンボリックリンクすることを可能にします。2 つ目の引数はフックされたオブジェクトの文字列表現 (たとえば、ホストのホスト名) です。

~foreman/config/hooks/host/managed/create/50_register_system.sh create foo.example.com
Copy to Clipboard Toggle word wrap

フックオブジェクトの JSON 表現は標準入力で渡されます。この JSON は v2 API ビューによって生成されます。jgrep でこれを読み取るユーティリティーは examples/hook_functions.sh で提供され、ほとんどのユーザーにとっては、このユーティリティースクリプトを source コマンドで実行するだけで十分です。それ以外の場合は、パイプバッファーが満杯になり、Foreman スレッドがブロックされることを防ぐために、標準入力を閉じることが推奨されます。

echo '{"host":{"name":"foo.example.com"}}' \
  | ~foreman/config/hooks/host/managed/create/50_register_system.sh \
       create foo.example.com
Copy to Clipboard Toggle word wrap

イベントディレクトリー内の各フックは、アルファベット順に実行されます。オーケストレーションフックの場合は、フックのファイル名の整数接頭辞が優先度値として使用されます。このため、DNS、DHCP、VM 作成、および他のタスクに関連して実行するタイミングが影響を受けます。

13.2.7. フックの失敗とロールバック

フックが失敗し、ゼロ以外のリターンコードで終了した場合は、イベントがログに記録されます。Rails イベントの場合は、他のフックの実行が続行されます。オーケストレーションイベントの場合は、失敗によってアクションが中止され、ロールバックが実行されます。別のオーケストレーションアクションが失敗した場合は、そのアクションをロールバックするためにフックが再び呼び出されることがあります。この場合は、最初の引数が適切に変更されるため、スクリプトで処理する必要があります (たとえば、"create" フックは、あとでロールバックする必要がある場合、"destroy" とともに呼び出されます)。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat