制御ファイルを作成するには、まずインストールしたいシステムに関して情報の収集を行う必要があります。この情報収集にはハードウエアデータやネットワーク情報などが含まれます。まずはインストール予定のマシンに対して、下記のような情報を収集してください:
ハードディスクの種類とサイズ
グラフィカルなインターフェイスと接続されているモニタ (もしあれば)
既知であればネットワークインターフェイスと MAC アドレスの情報 (特に DHCP を使用するような場合)
なお、 autoyast2-installation および autoyast2 の両パッケージがインストールされていることも確認しておいてください。
1 台もしくは複数台のコンピュータに対して制御ファイルを作成する目的で、 YaST をベースにした設定インターフェイスが提供されています。このシステムは、 openSUSE Leap を通常の手順でインストールしたり設定したりする際に使用する、既存のモジュールをベースにして作られています。
設定管理システムを使用することで、制御ファイルを簡単に作成することができるほか、複数のクライアントからアクセスすることができるようにするため、ネットワーク環境内で設定のリポジトリを管理したりすることもできます。
AutoYaST のプロファイルを作成するのに最も簡単な方法は、既存の openSUSE Leap システムを雛形として使用することです。既にインストール済みのシステムから › › を選択して、メニューバーから › を選択してください。あとはプロファイル内に含めたいシステムコンポーネントを選択するだけです。それ以外にも、 › › を選択するか、もしくはコマンドラインから sudo yast clone_system を実行すると、現在のシステムの設定全てを含むプロファイルを作成することもできます。
いずれの方法とも /root/autoinst.xml ファイルを作成することになります。システム複製でプロファイルを作成した場合は、作成したマシンと全く同じクローンを作成するプロファイルになります。ただし、通常は全く同じシステムを構成するのではなく、少しずつ異なるシステムを構築するのが一般的であるため、お使いの XML エディタなどで細かい微調整を行うことになります。
プロファイル内には、たとえばパスワードハッシュや登録キーなど、機密情報が含まれる可能性があることに注意してください。
また、出力されたプロファイルはよくご確認のうえ、ファイルのパーミッションを適切に設定するようにしてください。
いくつかの例外を除いて、ほぼ全ての制御ファイルのリソースは、設定管理システムを利用することで設定することができます。システムは柔軟に作られていて、設定を作成する際の手順も、通常の YaST コントロールセンターと同じユーザインターフェイスになっています。既存のものと同じユーザインターフェイスであるだけでなく、パーティション設定や汎用オプション、ソフトウエアなど、特殊で複雑な設定を作成するための新しいインターフェイスも提供されています。
これに加えて、 CMS では生成された制御ファイルの正当性を確認する仕組みも備えていますので、生成された制御ファイルをそのまま自動インストールに使用することができます。
まずは設定管理システム (autoyast2 パッケージ) がインストールされていることを確認し、 YaST コントロールセンターから AutoYaST を起動するか、もしくは root で下記のコマンドを実行します (なお、グラフィカルな表示を行いたい場合は、 DISPLAY 環境変数を正しく設定していることを確認してから実行してください):
/sbin/yast2 autoyast
制御ファイルを手作業で編集する場合は、まず書式が正しいことを確認する必要があります。書式を確認するには、お使いのディストリビューションに既に用意されているツールをお使いください。たとえばファイルの書式が正しいこと (XML の構造に間違いがないこと) を確認したい場合は、 libxml2 パッケージ内に含まれる xmllint ユーティリティを使用します:
xmllint <制御ファイル>
制御ファイルの書式に問題が見つかると (たとえばタグが正しく閉じられていないなど) 、 xmllint はエラーを報告します。
制御ファイルの内容を確認したい場合は、同じパッケージ内に含まれる jing ツールをお使いください。確認の際、タグ配置の誤りのほか、必須のタグや属性の確認や属性値の確認も行われます。
jing /usr/share/YaST2/schema/autoyast/rng/profile.rng <制御ファイル>
/usr/share/YaST2/schema/autoyast/rng/profile.rng ファイルは yast2-schema-default パッケージ内に含まれています。このファイルには、 AutoYaST プロファイルの書式とクラスに関する情報が書かれています。
AutoYaST は多の製品やモジュールを利用することで拡張を行うことができますが、スキーマ側にはそれらの拡張に対応するための仕様が含まれていません。そのため AutoYaST に対して拡張を使用するプロファイルを指定した場合、プロファイルが正しくないものとして扱われてしまう場合があります。
このような事情から、 openSUSE Leap 15.3 およびそれ以降では、 AutoYaST はトップレベルに未知のセクションが存在していても、それらを無視するようになっています。たとえば下記の例でいえば、 <sap-inst> 内は検証されず無視されるものの、残りの箇所は通常通り検証が行われます。
<general>
<mode>
<confirm config:type="boolean">true</confirm>
</mode>
</general>
<sap-inst>
<!-- this section is not validated -->>
</sap-inst>自動インストールを行う前に、これらのチェックで表示されたエラーを全て修正してください。制御ファイルの書式や形式が正しくない場合、自動インストールの処理を開始することはできません。
制御ファイルの編集にあたっては、お使いのシステムで利用可能な XML エディタを使用するか、もしくは XML に対応したテキストエディタ (例: Emacs, Vim) をお使いください。 ただし、複数のマシンに対して制御ファイルを作成する場合は最適な選択であるとは言えないため、設定管理システム (CMS) を併用することをお勧めします。
Emacs に内蔵された nxml-mode を使用すると、タグの補完機能や検証機能も存在する、完全機能の XML エディタとして使用することができます。 nxml-mode の設定方法について、詳しくは Emacs のヘルプをお読みください。
雛形となる制御ファイルが既に存在していて、その中の一部をスクリプトやコマンドラインで修正したい場合は、 xsltproc のような XSLT プロセッサを使用することをお勧めします。たとえば AutoYaST の制御ファイル内のホスト名を、スクリプトを介して修正したいような場合がそれにあたります (ホスト名を設定するような場合は、それをスクリプト化することをお勧めします) 。
まずは XSL ファイルを作成します:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:y2="http://www.suse.com/1.0/yast2ns"
xmlns:config="http://www.suse.com/1.0/configns"
xmlns="http://www.suse.com/1.0/yast2ns"
version="1.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="no" cdata-section-elements="source"/>
<!-- パラメータ名 -->
<xsl:param name="hostname"/>
<xsl:param name="domain"/>
<xsl:template match="/">
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
<xsl:template match="y2:dns">
<xsl:copy>
<!-- where to copy the parameters -->
<domain><xsl:value-of select="string($domain)"/></domain>
<hostname><xsl:value-of select="string($hostname)"/></hostname>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()" >
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>このファイルでは、ホスト名とドメイン名をパラメータとして求めるようになっています。
<xsl:param name="hostname"/> <xsl:param name="domain"/>
これらの情報は、同じ制御ファイル内の DNS セクション内に書かれているものと同じです。つまり、 DNS セクション内に既にドメイン要素が存在する場合、ここにもう 1 つの設定を記述することになってしまいます。これでは期待通りの動作にならないことがあります。
XSLT に関する詳細については、公式 Web ページ www.w3.org/TR/xslt (英語) をお読みください。
用途にもよりますが、 AutoYaST のプロファイルを作成する作業は、特にルールやクラス、 ERB テンプレートや事前スクリプトを使用する必要が生じた場合は、複雑なものになってしまいます (動的なプロファイルに関する詳細は、 パートIII「動的プロファイルによる一括インストールの管理」 をお読みください) 。このような複雑なプロファイルのテストやデバッグの作業を簡単にするため、 AutoYaST には check-profile と呼ばれるコマンドが用意されています。これは取得や構築のほか、必要であれば発生しうる問題を検出するためのプロファイル取り込みにも対応しています。
openSUSE Leap 15.3 およびそれ以降のバージョンでは、 AutoYaST はインストール時にもプロファイルの検証を行い、その結果をユーザに報告します。この動作はそのままにしておくことが推奨されますが、無効化したい場合は YAST_SKIP_XML_VALIDATION という起動パラメータを 1 に設定してください。
これに加えて、テストやデバッグの作業を簡単にできるようにするため、 AutoYaST では check-profile というコマンドを提供しています。このコマンドはプロファイルの取得や構築のほか、必要であれば取り込みの処理などを行って、潜在的な問題点を抽出することができます。
このコマンドはインストール処理と同じアプローチを使用して動作しますが、現在のシステムにインストールされている YaST のパッケージバージョンやアーキテクチャなどが、インストールメディアにインストールされているものと異なる場合、処理結果が異なる場合があります。
また、事前スクリプトや ERB のコードは root ユーザとして実行されることから、信頼できるプロファイルのみを使用するようにしてください。
このコマンドの最も簡単な使用方法は、プロファイルを読み込んで検証する処理です:
>sudoyast2 autoyast check-profile filename=autoinst.xml output=result.xml
result.xml ファイルには、プロファイルを評価した結果が書き込まれます。ただし、高度な機能を使用していなかった場合であっても、 autoinst.xml と result.xml の内容は異なる場合があることに注意してください。これは、 AutoYaST がプロファイルを処理する際に、いくつかのクリーンアップ処理を実施するためです。
check-profile はリモートのファイルを扱うこともできます:
>sudoyast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml
必要であれば、 AutoYaST はプロファイル内にスクリプトを内蔵させて実行することができます。また、その実行時に検出されたエラーを報告することもできます。これは特に、事前スクリプト内でプロファイルを修正しているような場合に有用な仕組みです。この機能を有効化するには、 run-scripts オプションを true にします。
>sudoyast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml run-scripts=true
なお、 run-scripts オプションでスクリプトの実行を許可すると、スクリプトは root 権限で実行されることになりますので、現在お使いのシステムに悪い影響が発生する可能性があることに注意してください。
プロファイルの内容が正しい場合であっても、プロファイルの取り込み時に何らかの問題が発生することがあります。これは AutoYaST がプロファイルを取得して構築し、検証する処理で、論理的なチェックまでは行っていないことによるものです。
このような問題の発生を予想させたい場合は、 check-profile コマンドでプロファイルの取り込みを実行し、検出された問題を報告するようにしてください。この処理にはしばらくの時間がかかりますので、 import-all オプションを false に設定して、この処理を無効化することもできます。
>sudoyast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml import-all=false
なお、プロファイルの取り込みは安全な処理であり、取り込みを実行するシステムに影響を与えることはありません。