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>