4.31.1項 「事前スクリプト」 で示しているとおり、プロファイルの内容を変更するためのインストール前スクリプトを設定することができます。このスクリプトは簡単に言うと、スクリプトが /tmp/profile/modified.xml ファイルを生成すると、 AutoYaST はその生成されたプロファイルを読み込み、元のプロファイルを廃棄する仕組みです。
これは比較的柔軟な仕組みですが、インストールメディア内に存在する言語とライブラリのみが使用できるという点にご注意ください。
ルール とは異なり、 ERB テンプレートの仕組みとスクリプトを組み合わせて使用することもできます。 AutoYaST では、対象のスクリプトを実行する前に、 ERB タグの評価が行われます。この動作はプロファイル内に組み込まれたスクリプトに対してのみ有効で、外部のスクリプトに対しては適用されません。
下記の例では、 MAC アドレスをベースにしてプロファイルをダウンロードしています。ファイルは /tmp/profile/modified.xml 内に保存されますので、 AutoYaST はそれを読み込んで使用するようになります。
<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>Ruby スクリプト内から ERB ヘルパーを使用することもできます。ヘルパーを使用するには require で yast と autoinstall/y2erb ライブラリを指定してください。また、 ERB ヘルパーへのアクセスには Y2Autoinstall::Y2ERB::TemplateEnvironment クラスを指定してください。
<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>