付録A テンプレート作成の参照

Embedded Ruby (ERB) は、プレーンテキストと Ruby コードを組み合わせるテンプレートをベースにしてテキストファイルを生成するためのツールです。Red Hat Satellite は、プロビジョニングテンプレート (「プロビジョニングテンプレート」Red Hat Satellite Provisioning Guide)、リモート実行 ジョブテンプレート (12章Satellite ホストでのジョブの実行)、パーティションテーブル のテンプレート (「パーティションテーブル」)、および スマートパラメーター (「スマート変数の設定」) で ERP 構文を使用します。このセクションでは、ERB テンプレートで使用できる Satellite 固有の関数および変数と使用例のいくつかについての概要を示します。Red Hat Satellite で提供されるデフォルトテンプレート (ホストプロビジョニングテンプレートホストジョブテンプレート) には ERB 構文のサンプルが十分にあることも留意してください。
ホストのプロビジョニングまたはリモートジョブの実行時に、ERB のコードが実行され、変数はホスト固有の値に置き換えられます。このプロセスは、レンダリング と呼ばれています。Satellite Server ではセーフモードのレンダリングオプションがデフォルトで有効にされており、これにより、有害なコードがテンプレートから実行されることを防ぐことができます。

A.1. ERB テンプレートの作成

以下は ERB 構文を要約したポイントになります。
  • <% %>: Ruby コードを ERB テンプレート内で囲むマークです。コードはテンプレートのレンダリング時に実行されます。これには Ruby の制御フロー構造および Satellite 固有の関数および機能を含めることができます。たとえば、以下のようになります。
    <% if @host.operatingsystem.family == "Redhat" && @host.operatingsystem.major.to_i > 6 %>
    systemctl <%= input("action") %> <%= input("service") %>
    <% else %>
    service <%= input("service") %> <%= input("action") %>
    <% end -%>
  • <%= %>: コード出力はテンプレートに挿入されます。これは変数の置き換えに便利です。たとえば、以下のようになります。
    echo <%= @host.name %>
  • <% -%>, <%= -%>: デフォルトで改行文字は、行末で閉じられている場合に Ruby ブロックの後に挿入されます。この動作を抑制するには、囲みマークを変更します。以下のテンプレートは例になります。
    curl <%= @host.ip -%>
    /mydir
    上記のテンプレートは以下のようにレンダリングされます。
    curl <%= @host.ip %>/mydir
    これはレンダリングされるテンプレートの行数を減らすために使用されます (Ruby 構文で許可される場合)。
  • <%# %>: テンプレートのレンダリング時に無視されるコメントを囲むマークです。
    <%# A comment %>