Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
適用先 openSUSE Leap 15.6

8 ERB テンプレートとスクリプトの組み合わせ Edit source

4.31.1項 「事前スクリプト」 で示しているとおり、プロファイルの内容を変更するためのインストール前スクリプトを設定することができます。このスクリプトは簡単に言うと、スクリプトが /tmp/profile/modified.xml ファイルを生成すると、 AutoYaST はその生成されたプロファイルを読み込み、元のプロファイルを廃棄する仕組みです。

これは比較的柔軟な仕組みですが、インストールメディア内に存在する言語とライブラリのみが使用できるという点にご注意ください。

8.1 スクリプト内への ERB の組み込み Edit source

ルール とは異なり、 ERB テンプレートの仕組みとスクリプトを組み合わせて使用することもできます。 AutoYaST では、対象のスクリプトを実行する前に、 ERB タグの評価が行われます。この動作はプロファイル内に組み込まれたスクリプトに対してのみ有効で、外部のスクリプトに対しては適用されません。

下記の例では、 MAC アドレスをベースにしてプロファイルをダウンロードしています。ファイルは /tmp/profile/modified.xml 内に保存されますので、 AutoYaST はそれを読み込んで使用するようになります。

例 8.1: プロファイルを取得するために MAC アドレスを使用する方法
<scripts>
  <pre-scripts config:type="list">
    <script>
      <interpreter>shell</interpreter>
      <filename>load_profile.sh</filename>
      <% mac = network_cards.first >
      <source><![CDATA[#!/bin/bash
wget -O /tmp/profile/modified.xml http://myserver/<%= network_cards.first[:mac] %>.xml
]]></source>
    </script>
  </pre-scripts>
</scripts>

8.2 Ruby スクリプト内からの ERB ヘルパーへのアクセス Edit source

Ruby スクリプト内から ERB ヘルパーを使用することもできます。ヘルパーを使用するには requireyastautoinstall/y2erb ライブラリを指定してください。また、 ERB ヘルパーへのアクセスには Y2Autoinstall::Y2ERB::TemplateEnvironment クラスを指定してください。

例 8.2: Ruby スクリプト内からの ERB ヘルパーへのアクセス
<scripts>
  <pre-scripts config:type="list">
    <script>
      <interpreter>/usr/bin/ruby</interpreter>
      <filename>load_profile.rb</filename>
      <source><![CDATA[#!/usr/bin/env ruby
require "yast"
require "autoinstall/y2erb"
helpers = Y2Autoinstallation::Y2ERB::TemplateEnvironment.new
# TemplateEnvironment のインスタンスを利用してヘルパーを呼び出すことができます
disk_devices = helpers.disks.map { |d| d[:device] }
File.write("/root/disks.txt", disk_devices.join("
"))
]]></source>
    </script>
  </pre-scripts>
</scripts>
このページを印刷