Red Hat Training

A Red Hat training course is available for Red Hat Satellite

A.3. Satellite 固有の関数および変数

このセクションでは、ERB テンプレート用の Satellite 固有の関数および変数を一覧表示します。それらの中にはどのテンプレートで使用できるものもあれば、使用が制限されるものもあります。たとえば、ジョブテンプレートは @host 変数のみを受け入れ、表A.4「キックスタート固有の変数」 の変数はキックスタートテンプレートでのみ適用できます。
以下の表に記載されている関数は、すべての種類のテンプレートで使用することができます。

表A.1 汎用的な関数

名前説明
indent(n)コードブロックを n スペース分インデントします。インデントされていないスニペットテンプレートの使用時に便利です。
foreman_url(kind)完全な URL を、ホストでレンダリングされた指定タイプのテンプレートに返します。たとえば、「provision」タイプのテンプレートは通常 http://HOST/unattended/provision にあります。
snippet(name)指定されたスニペットテンプレートをレンダリングします。プロビジョニングテンプレートをネスト化するのに便利です。
snippets(file)Foreman データベースの指定されたスニペットをレンダリングし、データベースにない場合は unattended/snippets/ ディレクトリーからこれをロードします。
snippet_if_exists(name)指定されたスニペットをレンダリングし、指定された名前を持つスニペットが見つからない場合は省略します。

例A.1 スニペットおよびインデント関数の使用

以下の構文は、subscription_manager_registration スニペットをテンプレートにインポートし、4 スペース分インデントします。
<%= indent 4 do
snippet 'subscription_manager_registration'
end %>
以下の関数はジョブテンプレートで使用できます。使用例については、「詳細テンプレートの作成」 を参照してください。

表A.2 ジョブテンプレート固有の関数

名前説明
input(input_name)ジョブ実行時に指定された入力の値を返します。
render_template(name, parameters)汎用的な snippet() 関数と同様に指定されたテンプレートを返しますが、引数をテンプレートに渡すことができます。
以下の変数は、テンプレート内でのホストの使用を可能にします。

表A.3 ホスト固有の変数および関数

名前説明
@host.architectureホストのアーキテクチャーです。
@host.bond_interfacesすべてのボンディングインターフェースのアレイを返します。注記 を参照してください。
@host.capabilitiesシステムプロビジョニングの方法には、ビルド (キックスタートなど) またはイメージのいずれかを使用できます。
@host.certnameホストの SSL 証明書名です。
@host.diskLayoutホストのディスクレイアウトです。オペレーティングシステムから継承できます。
@host.domainホストのドメインです。
@host.environmentホストの Puppet 環境です。
@host.factsFacter からファクトの Ruby ハッシュを返します。たとえば、出力の 'ipaddress' ファクトにアクセスするには、@host.facts['ipaddress'] を指定します。
@host.grub_passホストの GRUB パスワードを返します。
@host.hostgroupホストのホストグループです。
@host.info['parameters']ホストパラメーターについての情報が含まれる Ruby ハッシュを返します。たとえば、@host.info['parameters']['lifecycle_environment'] を使用してホストのライフサイクル環境を取得します。
@host.image_build?ホストがイメージを使用してプロビジョニングされる場合は true を返します。
@host.interfacesプライマリーインターフェースを含む利用可能なすべてのホストインターフェースのアレイが含まれます。注記 を参照してください。
@host.interfaces_with_identifier('IDs')指定された ID を持つインターフェースのアレイを返します。複数の ID のアレイを入力として渡すことができます (例: @host.interfaces_with_identifier(['eth0', 'eth1']))。注記 を参照してください。
@host.ipホストの IP アドレスです。
@host.locationホストの位置です。
@host.macホストの MAC アドレスです。
@host.managed_interfaces管理対象インターフェースのアレイを返します (BMC およびボンディングインターフェースを除く)。注記 を参照してください。
@host.medium割り当てられたオペレーティングシステムのインストールメディアです。
@host.nameホストの完全名です。
@host.operatingsystem.familyオペレーティングシステムファミリーです。
@host.operatingsystem.major割り当てられたオペレーティングシステムのメジャーバージョンの番号です。
@host.operatingsystem.minor割り当てられたオペレーティングシステムのマイナーバージョンの番号です。
@host.operatingsystem.name割り当てられたオペレーティングシステムの名前です。
@host.operatingsystem.boot_files_uri(@host.medium,@host.architecture)カーネルおよび initrd への完全パスで、アレイを返します。
@host.os.medium_uri(@host)プロビジョニングに使用される URI です (インストールメディアに設定されるパス)。
@host.param_false?(name)指定された名前のホストパラメーターが false と評価される場合に false を返します。
@host.param_true?(name)指定された名前のホストが true と評価される場合に true を返します。
@host.params['parameter_name']指定されたパラメーターの値を返します。
@host.primary_interfaceホストのプライマリーインスタンスを返します。
@host.providerコンピュートリソースプロバイダーです。
@host.provision_interfaceホストのプロビジョニングインターフェースを返します。インターフェースオブジェクトを返します。
@host.ptableパーティションテーブル名です。
@host.puppetmasterホストが使用する必要のある Puppet マスターです。
@host.pxe_build?ホストがネットワークまたは PXE を使用してプロビジョニングされる場合に true を返します。
@host.shortnameホストの省略名です。
@host.sp_ipBMC インターフェースの IP アドレスです。
@host.sp_macBMC インターフェースの MAC アドレスです。
@host.sp_nameBMC インターフェースの名前です。
@host.sp_subnetBMC ネットワークのサブネットです。
@host.subnet.dhcpDHCP プロキシーがこのホストに設定されている場合は true を返します。
@host.subnet.dns_primaryホストのプライマリー DNS サーバーです。
@host.subnet.dns_secondaryホストのセカンダリー DNS サーバーです。
@host.subnet.gatewayホストのゲートウェイです。
@host.subnet.maskホストのサブネットマスクです。
@host.url_for_boot(:initrd)このホストに関連付けられる initrd イメージへの完全パスです。変数を補間しないので推奨されません。
@host.url_for_boot(:kernel)このホストに関連付けられたカーネルへの完全パスです。変数を補間しないので推奨されません。boot_files_uri が優先されます。
@provisioning_typeプロビジョニングのタイプに応じて「host」または「hostgroup」と等しくなります。
@staticネットワーク設定が静的な場合、true を返します。
@template_nameレンダリングされるテンプレートの名前です。
grub_passmd5pass 引数でラップされる GRUP パスワードを返します (例: --md5pass=#{@host.grub_pass})。
ks_consoleポートを使用して組み立てられる文字列およびカーネル行に追加できるボーレートを返します (例: console=ttyS1,9600)。
root_passシステムに設定される root パスワードを返します。

注記

@host.interfaces または @host.bond_interfaces などのネットワークインターフェースに関連するホスト変数は、アレイで分類されるインターフェースデータを返します。特定インターフェースのパラメーター値を抽出するには、Ruby メソッドを使用してアレイを解析します。たとえば、アレイの最初のインスタンスについての情報を取得し、これをキックスタートテンプレートで使用するには、以下を実行します。
<% myinterface = @host.interfaces.first %>
IPADDR="<%= myinterface.ip %>"
NETMASK="<%= myinterface.subnet.mask %>"
GATEWAY="<%= myinterface.subnet.gateway %>"
インターフェース名のアレイを抽出するなどの目的でインターフェースアレイを繰り返すことができます。以下を使用します。
<% ifnames = []
@host.interfaces.each do |i|
  ifnames.push(i.name)
end %>

例A.2 ホスト固有変数の使用

以下の例では、ホストで Puppet および Puppetlabs リポジトリーが有効にされているかどうかをチェックします。
<%
pm_set = @host.puppetmaster.empty? ? false : true
puppet_enabled = pm_set || @host.param_true?('force-puppet')
puppetlabs_enabled = @host.param_true?('enable-puppetlabs-repo')
%>
以下の例では、パッケージ関連の決定に使用できるホストのオペレーティングシステムのマイナーおよびメジャーバージョンを取得する方法を示します。
<%
os_major = @host.operatingsystem.major.to_i
os_minor = @host.operatingsystem.minor.to_i
%>

<% if ((os_minor < 2) && (os_major < 14)) -%>
...
<% end -%>
以下の例では、ホストのスニペットで DHCP ブートモードが有効な場合に 'kickstart_networking_setup' スニペットをインポートします。
<% subnet = @host.subnet %>
<% if subnet.respond_to?(:dhcp_boot_mode?) -%>
<%= snippet 'kickstart_networking_setup' %>
<% end -%>
一般的な Ruby メソッドのほとんどはホスト固有の変数で使用できます。とえば、ホストの IP アドレスの最後のセグメントを抽出するには、以下を使用できます。
<% @host.ip.split('.').last %>
以下の変数は、キックスタートプロビジョニングテンプレート内で使用されるように設計されています。

表A.4 キックスタート固有の変数

名前説明
@archホストのアーキテクチャー名です。@host.architecture.name と同じです。
@dynamic使用されているパーティションテーブルが %pre スクリプト (表の最初の行に #Dynamic オプションがある) の場合 true を返します。
@epelepel-release rpm の正しいバージョンを自動インストールするコマンドです。%post スクリプトで使用されます。
@mediapathURL コマンドを提供する詳細なキックスタート行です。
@osverオペレーティングシステムのメジャーバージョンの番号です。@host.operatingsystem.major と同じです。