目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Enterprise Microのドキュメント / 展開ガイド / 事前に構築されたイメージの展開 / Combustionによる設定
適用項目 SUSE Linux Enterprise Micro 5.5

9 Combustionによる設定

この章では、Combustionについて説明します。Combustionとは、設定に従って最初のブート時にシステムを設定するために使用するツールです。

9.1 Combustionについて

Combustionは、最初のブート時にシステムを設定できるdracutモジュールです。Combustionはscriptと呼ばれる提供されるファイルを読み込み、その中でコマンドを実行して、ファイルシステムへの変更を行います。Combustionを使用して、デフォルトパーティションの変更、ユーザのパスワードの設定、ファイルの作成、パッケージのインストールなどを実行できます。

Combustion dracutモジュールは、ignition.firstboot引数がカーネルコマンドラインに渡された後に呼び出されます。その後、Combustionはscriptから設定を読み込みます。ネットワークフラグがscriptで見つかった場合、Combustionはネットワークを設定しようとします。/sysrootがマウントされると、Combustionは/etc/fstabにあるすべてのマウントポイントを有効にしようとし、transactional-updateを呼び出して、他の変更(rootパスワードの設定やパッケージのインストールなど)を適用します。

Combustionを使用する場合は、設定デバイスにcombustionという名前のラベルを付け、その設定メディアで固有のディレクトリ構造を作成して、scriptという名前の設定ファイルを含める必要があります。設定メディアのルートディレクトリに、combustionというディレクトリを作成し、scriptを他のファイル(SSHキー、設定ファイルなど)とともにこのディレクトリに配置します。ディレクトリ構造は次のようになります。

<root directory>
└── combustion
    └── script
    └── other files

Combustionを使用して、QEMU/KVM仮想マシンを設定できます。この場合、qemuコマンドのfw_cfgパラメータを使用してscriptファイルの場所を渡します。

	-fw_cfg name=opt/org.opensuse.combustion/script,file=/var/combustion-script

Combustionは、Ignitionとともに使用することができます。Ignitionとともに使用する場合は、設定メディアのignitionにラベルを付け、以下に示すように、ignitionディレクトリ構造にconfig.ignを含むディレクトリを含めます。

<root directory>
└── combustion
    └── script
    └── other files
└── ignition 
    └── config.ign

このシナリオでは、IgnitionはCombustionの前に実行されます。

9.2 script環境設定ファイル

script環境設定ファイルは、transactional-updateシェルでシステム上で実行される一連のコマンドです。このセクションでは、Combustionを使用して、さまざまな設定タスクを実行する例を示します。

重要
重要: インタープリタ宣言を含める

scriptファイルはbashによって解釈されるため、必ず最初の行で、インタープリタ宣言を使用してファイルを開始してください。

 #!/bin/bash

システムにログインする場合は、少なくともrootパスワードを含めてください。ただし、SSHキーを使用した認証を確立することをお勧めします。rootパスワードを使用する必要がある場合は、セキュアなパスワードを設定してください。ランダムに生成されたパスワードを使用する場合は、少なくとも10文字を使用してください。パスワードを手動で作成する場合は、10文字以上を使用し、大文字と小文字、および数字を組み合わせます。

9.2.1 ネットワーク設定

最初のブート時にネットワーク接続を設定して使用するには、scriptに次のステートメントを追加します。

 # combustion: network

このステートメントを使用すると、rd.neednet=1引数がdracutに渡されます。このステートメントを使用しない場合、システムはネットワーク接続なしで設定されます。

9.2.2 パーティショニング

SLE Micro生イメージは、5.1項 「デフォルトパーティショニング」で説明されるように、デフォルトのパーティショニングスキームで提供されます。異なるパーティショニングを使用することもできます。次の一連のスニペット例では、/homeを別のパーティションに移動します。

注記
注記: スナップショットに含まれるディレクトリの外部で変更を実行する

次のスクリプトは、スナップショットに含まれていない変更を実行します。スクリプトが失敗し、スナップショットが破棄された場合、一部の変更は表示されたままとなり元に戻すことができません(/dev/vdbデバイスへの変更と同様)。

次のスニペットは、/dev/vdbデバイス上で単一パーティションを持つGPTを作成します。

sfdisk /dev/vdb <<EOF
label: gpt
type=linux
EOF 

partition=/dev/vdb1

パーティションはBTRFSにフォーマットされます。

wipefs --all ${partition}
mkfs.btrfs ${partition}

次のスニペットによって、/homeの可能なコンテンツが新しい/homeフォルダの場所に移動されます。

mount /home
mount ${partition} /mnt 
rsync -aAXP /home/ /mnt/
umount /home /mnt

次のスニペットは、/etc/fstabの古いエントリを削除して、新しいエントリを作成します。

awk -i inplace '$2 != "/home"' /etc/fstab
echo "$(blkid -o export ${partition} | grep ^UUID=) /home btrfs defaults 0 0" >>/etc/fstab

9.2.3 rootのパスワードの設定

rootパスワードを設定する前に、openssl passwd -6などを使用して、パスワードのハッシュを生成します。パスワードを設定するには、scriptに以下を追加します:

 echo 'root:$5$.wn2BZHlEJ5R3B1C$TAHEchlU.h2tvfOpOki54NaHpGYKwdNhjaBuSpDotD7' | chpasswd -e

9.2.4 SSHキーの追加

次のスニペットは、rootのSSHキーを格納するディレクトリを作成し、設定デバイスにあるSSH公開鍵をauthorized_keysファイルにコピーします。

 mkdir -pm700 /root/.ssh/
cat id_rsa_new.pub >> /root/.ssh/authorized_keys
注記
注記

SSHを介したリモートログインを使用する必要がある場合は、SSHサービスを有効にする必要があります。詳細については、9.2.5項 「サービスの有効化」を参照してください。

9.2.5 サービスの有効化

SSHサービスなど、一部のサービスを有効化する必要がある場合があります。SSHサービスを有効化するには、次の行をscriptに追加します。

 systemctl enable sshd.service

9.2.6 パッケージのインストール

重要
重要: ネットワーク接続およびシステムの登録が必要になる場合があります。

一部のパッケージには追加のサブスクリプションが必要になる場合があるため、あらかじめシステムを登録する必要がある場合があります。また、追加のパッケージをインストールするには、利用可能なネットワーク接続が必要になる場合もあります。

最初のブート設定時に、システムに追加パッケージをインストールできます。たとえば、以下を追加して、vimエディタをインストールできます。

zypper --non-interactive install vim-small
注記
注記

設定が完了して、設定されたシステムでブートした後では、zypperを使用できないことに注意してください。後で変更を実行するには、transactional-updateコマンドを使用して、変更されたスナップショットを作成する必要があります。詳細については、Chapter 3, Administration using transactional updatesを参照してください。