第3章 制御ファイルの作成

目次

3.1. 情報の収集
3.2. 設定管理システム (CMS) の利用
3.3. 手作業による制御ファイルの作成/編集
3.4. XSLT とスクリプトを利用したプロファイル (制御ファイル) の作成

3.1. 情報の収集

制御ファイルを作成するには、まずインストール対象のシステムに対して 情報を収集する必要があります。この情報にはハードウエア情報のほか、 ネットワーク情報なども含まれます。具体的には、下記のような情報を 収集します:

  • ハードディスクの種類とサイズ

  • グラフィカルインターフェイスと接続されているモニタ (もしあれば)

  • 可能であれば、ネットワークインターフェイスと MAC アドレス (たとえぱ DHCP を使用するかどうかなど)

上記の情報があれば、お使いのシステムの自動インストールを動作させるための プロファイルを、作成する準備が整ったことになります。

3.2. 設定管理システム (CMS) の利用

1 台または複数台のコンピュータに対する制御ファイルを作成する目的で、 YaST2 をベースにした設定インターフェイスが用意されています。このシステムは、 SUSE Linux のインストール後に通常の操作モードでコンピュータを動作させるのに必要と 思われる、一般的な既存モジュールを利用することを前提にしています。

設定管理システムを利用することで、制御ファイルを簡単に作成することができる ほか、ネットワーク環境内にある複数のクライアントで利用するための、設定リポジトリ を管理することができます。

図3.1 設定システム

設定システム

3.2.1. 新しいプロファイルの作成

いくつかの例外はありますが、設定管理システムでは制御ファイル内のほぼ 全てのリソースを設定することができます。このシステムは柔軟に動作する ように作られていて、いくつかのリソースは YaST2 コントロールセンターで 利用できるものと同じインターフェイスで設定を行ないます。これに加えて、 特殊な設定や複雑な設定をするのに必要な、新しいインターフェイスも 用意されています。これには、たとえばパーティション設定や汎用的な オプション、ソフトウエア設定などが含まれています。

また、 CMS を利用することで、生成される制御ファイルの正しさが保証され、 そのまま自動インストールを開始できるものを作成することができます。

なお CMS を利用するには、設定システム (autoyast2 パッケージ) のインストールが必要です。インストールしたあとは、 YaST2 コントロールセンター から起動するか、 もしくは root で下記のコマンドを実行します (グラフィカルインターフェイス を利用する場合は、 DISPLAY 変数が正しく設定されて いることをご確認ください):

/sbin/yast2 autoyast

3.3. 手作業による制御ファイルの作成/編集

制御ファイルを手作業で編集する場合は、制御ファイルの文法が正しいことを ご確認ください。文法を確認するには、ディストリビューションに用意されている ツールをご利用ください。たとえばファイルの書式が正しいことを確認するには、 libxml2 パッケージ内に用意されている xmllint ユーティリティを使用します:

xmllint <制御ファイル>

たとえばタグが閉じられていないなど、制御ファイルが正しい形式になっていない 場合、 xmllint はエラーを報告します。

このようにして、実際に自動インストールを行なう前にエラーをチェックして 修正することができます。自動インストールは、制御ファイルが正しい形式に なっていないと、開始することができないためです。

XML に対応したテキストエディタ (たとえば emacs, vim など) であれば、任意の エディタで制御ファイルを編集することができます。ただし、多数のマシンに対して 制御ファイルを作成するような場合は、テキストエディタでの編集は非常に手間の かかる作業になりますので、自動インストールエンジンと設定管理システム (CMS) を利用した方法のほうがお勧めです。

図3.2 kxmledit を利用した制御ファイルの編集

kxmledit を利用した制御ファイルの編集

3.4. XSLT とスクリプトを利用したプロファイル (制御ファイル) の作成

雛型を作成して一部分をスクリプトやコマンドラインで修正したいような場合は、 sablot などの XSLT プロセッサを利用することができます。 たとえば、既に AutoYaST のプロファイルを作成済みで、何らかの理由でホスト名 だけを変更したいような場合が考えられます (これは特に、繰り返し実施したい ような場合に便利です) 。

まずは XSL ファイルを作成します。

例3.1 スクリプトでホスト名とドメイン名を置きかえる例

<?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>
      <!-- パラメータのコピー先 -->
      <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>

このファイルは、 "hostname" (ホスト名) と "domain" (ドメイン) を埋めるための 設定です。

<xsl:param name="hostname"/>
<xsl:param name="domain"/>

これらのパラメータは、制御ファイル内の dns セクション内に書き込まれます。つまり、 dns セクション内に既に domain 要素が存在する場合、これは 2 つ目の値として書き込まれて しまいます (これは正しい結果ではありません) 。

新しい AutoYaST プロファイルを、雛型と XSL ファイルから作成したい場合は、下記の コマンドを実行します:

sabcmd add_hostname.xsl \$hostname=myHost \$domain=my.domain  template.xml

上記を実行すると、記入済みの AutoYaST プロファイルが標準出力 (STDOUT) に出力されます。

XSL ファイルが複数ある場合は、下記のようにして実行します:

sabcmd add_hd_vg.xsl \$device=/dev/sda \$partition=p2 \$vg=system \
        | sabcmd add_harddisk.xsl \$device=/dev/system \$lvm=true \
        | sabcmd ....
        | sabcmd add_hostname.xsl \$hostname=myHost \$domain=my.domain

それぞれの sabcmd をパイプで繋いでいることに注意してください。

XSLT について、詳しくは公式ページをお読みください: www.w3.org/TR/xslt


openSUSE AutoYaST 13.1