生ディスクイメージを使用した、IBM Z DASDディスクへのSLE Microの展開
- 概要
SLE Microでは、デバイスストレージに直接展開できる生イメージ(「事前構築のイメージ」とも呼ばれる)が提供されています。
- 目的
この記事では、IBM Zマシン上にSLE Microを展開する手順について段階を追って説明します。
- 所要時間
この記事の理解には20分ほどを要します。
- 目標
SLE Microをシステムに正常に展開します。
- 要件
Linuxが実行されているディスク。
生イメージを展開し、SLE Microが実行されるディスク。
設定メディアとして機能するディスク。
1 事前構築のイメージについて #
事前構築のイメージとは、実行中のオペレーティングシステムを、すぐに使用できる形で表したものです。これらのイメージは、インストーラを使用する従来の方法でインストールするのではなく、ターゲットホストのハードディスクにコピーします。このトピックでは、これらの事前構築のイメージに関する基本的な情報について説明します。
事前構築のイメージは、そのイメージで提供されているツールを使用して、最初のブート時に設定することを目的としています。ブートローダは、1.2項 「最初のブートの検出」で説明されているように最初のブートを検出します。各イメージにはデフォルトでマウントされるサブボリュームが付属しており、最初のブート設定時に変更できます。サブボリュームに関する詳細については、1.1項 「デフォルトパーティショニング」を参照してください。
1.1 デフォルトパーティショニング #
事前構築のイメージは、デフォルトのパーティション方式で用意されています。このパーティションは、最初のブート時にIgnitionまたはCombustionを使用して変更できます。
デフォルトのパーティション方式を変更する場合は、ルートファイルシステムをBtrfsにする必要があります。
イメージごとに次のサブボリュームがあります。
/home /root /opt /srv /usr/local /var
/etc
ディレクトリはoverlayFSとしてマウントされ、そこでは上位ディレクトリが/var/lib/overlay/1/etc/
にマウントされます。
デフォルトでマウントされているサブボリュームは、/etc/fstab
のx-initrd.mount
オプションで認識できます。その他のサブボリュームまたはパーティションは、IgnitionまたはCombustionのいずれかによって設定する必要があります。
1.2 最初のブートの検出 #
最初のブート時にのみ展開が設定されます。最初のブートとそれ以降のブートを区別するため、最初のブートの終了後にフラグファイル/boot/writable/firstboot_happened
が作成されます。このファイルがファイルシステムに存在しないと、属性ignition.firstboot
がカーネルコマンドラインに渡され、それによってIgnitionとCombustionの両方がトリガされて(initrdで)実行されます。最初のブートの完了後、/boot/writable/firstboot_happened
フラグファイルが作成されます。
設定ファイルが不適切であるか欠落しているために適切な設定にならない場合でも、/boot/writable/firstboot_happened
フラグファイルが作成されます。
1.2.1 以降のブート時にシステムの再設定を強制する #
最初のブートが発生した後で、システムを再設定する必要がある場合は、それ以降のブート時に再設定を強制することができます。ここでは2つのオプションがあります。
ignition.firstboot=1
属性をカーネルコマンドラインに渡すことができます。フラグファイル
/boot/writable/firstboot_happened
を削除できます。
2 SLE Microの展開 #
SLE Microの展開手順は、3つのフェーズで構成されます。どのフェーズもスキップせず、次に示す順序に従ってください。
DASDディスクの有効化 - 展開を開始する前に、使用するすべてのディスクが利用可能でアクティブであることを確認する必要があります。詳細については、3項 「マシンの準備」を参照してください。
設定デバイスの準備 - ネットワークの設定、ユーザの追加、システムの登録を行うには、4項 「設定ディスクの準備」に記載されている手順に従って設定を準備します。
SLE Microイメージのダウンロードとディスクへの展開。詳細については、5項 「DASDディスク上への生ディスクイメージの展開」を参照してください。
3 マシンの準備 #
SLE Microの展開を開始する前に、必要なDASDディスク3つすべてがアクティブかどうかを確認する必要があります。ディスクの状態をチェックするには、次のコマンドを実行します。
#
lsdasd
Bus-ID Status Name Device Type BlkSz Size Blocks
================================================================================
0.0.0100 active dasda 94:0 ECKD 4096 30720MB 7864380
0.0.0101 active dasdc 94:8 ECKD 4096 20480MB 5243040
0.0.0102 active dasdb 94:4 ECKD 4096 5120MB 1310760
5GBディスクは設定デバイスとして使用され、20GBディスクにはSLE Microが展開されます。
コマンド出力にディスクが表示されない場合は、ディスクを有効にする必要があります。次の手順に従います。
lszdev dasd
を実行してデバイスの全リストを表示します。#
lszdev dasd TYPE ID ON PERS NAMES dasd-eckd 0.0.0100 yes no dasda dasd-eckd 0.0.0101 no no dasd-eckd 0.0.0102 no no dasd-eckd 0.0.0190 no no dasd-eckd 0.0.019d no no dasd-eckd 0.0.019e no no dasd-eckd 0.0.0592 no no次のコマンドを使用してディスクを有効にします。
#
chzdev -eDISK_IDたとえば、ディスク
0.0.0101
を有効にするには、次のコマンドを実行します。#
chzdev -e 0.0.0101lsdasd
コマンドの出力でディスクがアクティブであることを確認します。
4 設定ディスクの準備 #
運用環境の展開には仮想ディスクが適しており、開発には物理ディスクが適しています。
インストールプロセス中に、ユーザやディレクトリを定義したり、SSHキーを提供したりするための複雑な設定を渡すことができます。そのためには、完全な設定を保存する設定デバイスを作成します。次の例で、このようなデバイスを作成する方法について説明します。
5GBディスクを特定します。
#
lsdasd Bus-ID Status Name Device Type BlkSz Size Blocks ================================================================================ 0.0.0100 active dasda 94:0 ECKD 4096 30720MB 7864380 0.0.0101 active dasdc 94:8 ECKD 4096 20480MB 5243040 0.0.0102 active dasdb 94:4 ECKD 4096 5120MB 1310760上記の出力では、設定デバイスとして使用するディスクの
Bus-ID
の値は0.0.0102です。デバイス名(/dev/dasdX
)は再起動のたびに変わる可能性があるため、ディスクの特定にはBus-ID
の値またはディスクサイズを使用します。ディスクをフォーマットします。フォーマットすると、そのディスク上のデータはすべて削除されることに注意してください。
#
dasdfmt -b 4096 -y -p /dev/dasdbパーティションを作成します。
#
parted /dev/dasdb mkpart ext2 0% 100%パーティションをフォーマットします。
#
mkfs.ext4 /dev/dasdb1パーティションに
ignition
というラベルを付けます。#
e2label /dev/dasdb1 ignitionファイルシステムを確認します。
#
blkidパーティションをマウントします。
#
mount /dev/dasdb1 /mntIgnitionまたはCombustion、あるいはその両方のディレクトリ構造を準備します。Ignitionの場合、次のコマンドを実行します。
#
mkdir -p /mnt/ignitionCombustionの場合、次のコマンドを実行します。
#
mkdir -p /mnt/combustionSSH公開鍵を
/mnt/combustion
にssh_key.pub
としてコピーします。説明に従ってさらに設定を準備します。
4.1 Combustionを使用したSLE Micro展開の設定 #
Combustionは、最初のブート時にシステムを設定できるdracutモジュールです。Combustionを使用すると、デフォルトパーティションの変更、ユーザのパスワードの設定、ファイルの作成、パッケージのインストールなどができます。
4.1.1 Combustionの動作 #
ignition.firstboot
引数をカーネルのコマンドラインに渡した後でCombustionが呼び出されます。Combustionは、script
という名前の付属のファイルを読み込み、そこに含まれるコマンドを実行して、ファイルシステムに変更を加えます。script
にネットワークフラグを記述していると、Combustionによってネットワークの設定が試みられます。/sysroot
がマウントされた後、Combustionは/etc/fstab
にあるマウントポイントをすべて有効にしようと試み、その後transactional-update
を呼び出して、root
パスワードの設定やパッケージのインストールなどの他の変更を適用します。
設定ファイルscript
は、combustion
をラベルとする設定メディアのcombustion
サブディレクトリに置く必要があります。ディレクトリ構造は次のようになる必要があります。
<root directory> └── combustion └── script └── other files
Combustionは、Ignitionとともに使用することができます。その場合は、設定メディアにignition
というラベルを付け、ignition
ディレクトリとconfig.ign
を次に示すようなディレクトリ構造に含めます。
<root directory> └── combustion └── script └── other files └── ignition └── config.ign
このシナリオでは、IgnitionはCombustionの前に実行されます。
4.1.2 Combustionの設定例 #
4.1.2.1 script
設定ファイル #
script
設定ファイルは、Combustionによってtransactional-update
シェルで解析および実行される一連のコマンドです。この記事では、Combustionで実行される設定タスクの例を示します。
script
ファイルはシェルで解釈されることから、その先頭行には必ずインタープリタ宣言を記述します。たとえば、Bashの場合は次のように記述します。
#!/bin/bash
実際のシステムにログインするには、少なくともroot
パスワードを指定します。ただし、SSHキーを使用した認証を確立することをお勧めします。root
パスワードを使用する必要がある場合は、セキュアなパスワードを設定してください。ランダムに生成されたパスワードを使用する場合は、少なくとも10文字を使用してください。パスワードを手動で作成する場合は、11文字以上を使用し、大文字、小文字、および数字を組み合わせてください。
4.1.2.1.1 ネットワーク設定 #
最初のブート時にネットワーク接続を設定および使用するには、次のステートメントをscript
に追加します。
# combustion: network
このステートメントを使用すると、rd.neednet=1
引数がdracutに渡されます。ネットワーク設定はデフォルトでDHCPを使用します。別のネットワーク設定が必要な場合は、4.1.2.1.2項 「initramfsでの変更の実行」の説明に従って進めます。
このステートメントを使用しない場合、システムはネットワーク接続がない設定のままになります。
4.1.2.1.2 initramfsでの変更の実行 #
initramfs環境の変更が必要になる場合があります。たとえば、NetworkManager用のカスタムネットワーク設定を/etc/NetworkManager/system-connections/
に書き込む場合などです。そのためには、prepare
ステートメントを使用します。
たとえば、静的IPアドレスで接続を作成し、DNSを設定する場合は、次のようにします。
#!/bin/bash # combustion: network prepare set -euxo pipefail nm_config() { umask 077 # Required for NM config mkdir -p /etc/NetworkManager/system-connections/ cat >/etc/NetworkManager/system-connections/static.nmconnection <<-EOF [connection] id=static type=ethernet autoconnect=true [ipv4] method=manual dns=192.168.100.1 address1=192.168.100.42/24,192.168.100.1 EOF } if [ "${1-}" = "--prepare" ]; then nm_config # Configure NM in the initrd exit 0 fi # Redirect output to the console exec > >(exec tee -a /dev/tty0) 2>&1 nm_config # Configure NM in the system curl example.com # Leave a marker echo "Configured with combustion" > /etc/issue.d/combustion
4.1.2.1.3 パーティショニング #
SLE Micro生イメージは、1.1項 「デフォルトパーティショニング」で説明されるように、デフォルトのパーティショニングスキームで提供されます。異なるパーティショニングを使用することもできます。次の一連のスニペット例では、/home
を別のパーティションに移動します。
次のスクリプトは、スナップショットに含まれていない変更を実行します。このスクリプトが失敗してスナップショットが破棄された場合、/dev/vdb
デバイスへの変更など、特定の変更は表示されたままになり、元に戻すことはできません。
次のスニペットは、/dev/vdb
デバイス上にパーティションが1つのみの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
4.1.2.1.4 新しいユーザの作成 #
Cockpitなどの一部のサービスでは、root以外のユーザを使用してログインする必要があるため、ここで非特権ユーザを少なくとも1人定義します。または、6.2項 「ユーザの追加」の説明に従って、実行中のシステムからこのようなユーザを作成できます。
新しいユーザアカウントを追加するには、まず、ユーザのパスワードを表すハッシュ文字列を作成します。openssl passwd -6
コマンドを使用します。
パスワードハッシュを取得したら、次の行をscript
に追加します。
mount /home useradd -m EXAMPLE_USER echo 'EXAMPLE_USER:PASSWORD_HASH' | chpasswd -e
4.1.2.1.5 root
のパスワードの設定 #
root
パスワードを設定する前に、openssl passwd
-6
などを使用して、そのパスワードのハッシュを生成します。パスワードを設定するには、script
に次の行を追加します。
echo 'root:PASSWORD_HASH' | chpasswd -e
4.1.2.1.6 SSHキーの追加 #
次のスニペットは、root
のSSHキーを保存するディレクトリを作成してから、設定デバイス上にあるSSH公開鍵をauthorized_keys
ファイルにコピーします。
mkdir -pm700 /root/.ssh/ cat id_rsa_new.pub >> /root/.ssh/authorized_keys
SSHを介したリモートログインを使用する必要がある場合は、SSHサービスを有効にする必要があります。詳細については、4.1.2.1.7項 「サービスの有効化」を参照してください。
4.1.2.1.7 サービスの有効化 #
SSHサービスなどのシステムサービスを有効にするには、script
に次の行を追加します。
systemctl enable sshd.service
4.1.2.1.8 パッケージのインストール #
特定のパッケージでは追加のサブスクリプションが必要になる場合があるので、システムの事前登録が必要なことがあります。また、追加のパッケージをインストールするには、利用可能なネットワーク接続が必要になる場合もあります。
最初のブート設定時に、システムに追加パッケージをインストールできます。たとえば、以下を追加して、vim
エディタをインストールできます。
zypper --non-interactive install vim-small
設定が完了し、設定したシステムでブートすると、zypper
を使用できなくなることに注意してください。後で変更を実行するには、transactional-update
コマンドを使用して、変更されたスナップショットを作成する必要があります。
4.1.2.2 script
ファイルの完全な例 #
次のscript
は、Combustionの独自の設定を記述する方法に関するガイドとして役立つ完全な設定を提供します。この例では、Ignitionの設定はこれ以上必要ありません。
#!/bin/bash # combustion: network prepare set -euxo pipefail ## The OSA subchannels to enable ZNET_SUBCHANNELS=0.0.1000,0.0.1001,0.0.1002 ## Network information to configure IPADDRESS="10.144.64.155/24" ## Formet is ipaddress/cidr GATEWAY="10.144.64.254" NAMESERVERS="10.144.53.53;10.144.53.54" ## A semicolon-separated list of name servers ## Hostname information NODE_HOSTNAME="micro6" ## Add password for root user ## Use either 'openssl passwd -6' or 'mkpasswd --method=sha-512' to encrypt the password. ROOT_USER_PASSWORD='PASSWORD_HASH' SSH_ROOT_PUBLIC_KEY=ssh_key.pub ## Add a regular user, because root login may be disallowed in some services. CREATE_NORMAL_USER=user ## Replace the "user" with a desired username here. NORMAL_USER_PASSWORD='PASSWORD_HASH' SSH_USER_PUBLIC_KEY=ssh_key.pub ## Register to SUSE Customer Center and install additional packages REG_EMAIL='tux@suse.com' ## Email address for product registration SLMICRO_REGCODE='REGISTRATIONCODE' ## A registration code required to install additional packages ADDITIONAL_PACKAGES='' ## A space separated list of additional packages to install nm_config() { umask 077 # Required for Network Manager configuration mkdir -p /etc/NetworkManager/system-connections/ cat >'/etc/NetworkManager/system-connections/Wired connection 1.nmconnection' <<EOF [connection] id=static type=ethernet autoconnect=true [ipv4] method=manual address1=$IPADDRESS gateway=$GATEWAY dns=$NAMESERVERS EOF } if [ "${1-}" = "--prepare" ]; then # Configure Network Manager in the initrd nm_config # Enable OSA network devices chzdev qeth $ZNET_SUBCHANNELS -ep chzdev qeth $ZNET_SUBCHANNELS -e exit 0 fi ## Post output on stdout exec > >(exec tee -a /dev/ttyS0) 2>&1 ## Set hostname echo $NODE_HOSTNAME > /etc/hostname ## Set root password echo root:$ROOT_USER_PASSWORD | chpasswd -e ## Add ssh public key as authorized key for the root user mkdir -pm700 /root/.ssh/ cat $SSH_ROOT_PUBLIC_KEY >> /root/.ssh/authorized_keys ## Mount /var and /home so user can be created smoothly if [ "$CREATE_NORMAL_USER" ] then mount /var && mount /home fi ## User creation if [ "$CREATE_NORMAL_USER" ] then echo "User creation is requested, creating user." useradd -m $CREATE_NORMAL_USER -s /bin/bash -g users echo $CREATE_NORMAL_USER:$NORMAL_USER_PASSWORD | chpasswd -e echo $CREATE_NORMAL_USER "ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/adminusers mkdir -pm700 /home/$CREATE_NORMAL_USER/.ssh/ chown -R $CREATE_NORMAL_USER:users /home/$CREATE_NORMAL_USER/.ssh/ cat $SSH_USER_PUBLIC_KEY >> /home/$CREATE_NORMAL_USER/.ssh/authorized_keys echo "Requested user has been created, requested password has been set." else echo "No user will be created" fi # Configure NM in the system nm_config # Enable OSA network device chzdev qeth $ZNET_SUBCHANNELS -ep chzdev qeth $ZNET_SUBCHANNELS -e ## Enable services echo "Enabling services." systemctl enable cockpit.socket systemctl enable sshd ## Unmount var and home if [ "$CREATE_NORMAL_USER" ] then umount /var && umount /home fi echo "Configured with Combustion at $(date)" > /etc/issue.d/combustion
4.2.1 Ignitionの動作 #
システムを初めてブートすると、Ignitionがinitramfs
の一部としてロードされ、設定ファイルを特定のディレクトリ(USBフラッシュディスク上、またはURLを指定可能)内で検索します。カーネルによってファイルシステムが一時ファイルシステムから実際のルートファイルシステムに切り替わる前(switch_root
コマンドが発行される前)に、すべての変更処理が実行されます。
Ignitionでは、JSON形式の設定ファイルconfig.ign
が使用されます。その設定は手動で記述できるほか、https://ignite.opensuse.orgにあるFuel Ignition Webアプリケーションを使用して生成することもできます。
Fuel IgnitionはIgnitionの語彙をまだ完全には網羅していません。そのため、結果として生成されるJSONファイルをさらに手動で微調整しなければならない場合があります。
4.2.1.1
config.ign
#
設定メディアのignition
サブディレクトリに設定ファイルconfig.ign
を置く必要があります。このような設定メディアとして、たとえばignition
をラベルとするUSBメモリが考えられます。ディレクトリ構造は次のようになる必要があります。
<root directory> └── ignition └── config.ign
Ignition設定でディスクイメージを作成するために、https://ignite.opensuse.orgにあるFuel Ignition Webアプリケーションを使用できます。
config.ign
には、複数のデータタイプ(オブジェクト、文字列、整数、ブール、オブジェクトのリスト)が含まれています。仕様の全詳細については、Ignition
specification v3.3.0を参照してください。
version
属性は必須であり、SLE Microの場合、その値は3.3.0
またはそれ以下のバージョンに設定する必要があります。そのように設定しないとIgnitionの実行に失敗します。
root
としてシステムにログインするには、少なくともroot
のパスワードを記述する必要があります。ただし、SSHキーを使用してアクセスを確立することをお勧めします。パスワードの設定では、必ずセキュアなパスワードを使用します。ランダムに生成されたパスワードを使用する場合は、少なくとも10文字を使用してください。パスワードを手動で作成する場合は、11文字以上を使用し、大文字、小文字、および数字を組み合わせてください。
4.2.2 Ignitionの設定例 #
4.2.2.1 設定例 #
このセクションでは、組み込みのJSON形式でのIgnition設定の例をいくつか示します。
1.1項 「デフォルトパーティショニング」では、事前構築されたイメージを実行するときに、デフォルトでマウントされるサブボリュームが列挙されます。デフォルトではマウントされないサブボリューム上で新しいユーザを追加する場合やファイルを変更する場合は、まずそのサブボリュームを宣言して、それもマウントされるようにする必要があります。ファイルシステムのマウントに関する詳細については4.2.2.1.1.3項 「filesystems
属性」を参照してください。
version
属性は必須
各config.fcc
はバージョン1.4.0以下を含む必要があります。バージョンは対応するIgnition仕様に変換されます。
4.2.2.1.1 ストレージの設定 #
storage
属性は、パーティションの設定、RAID、ファイルシステムの定義、ファイルの作成などに使用されます。パーティションを定義するには、disks
属性を使用します。filesystems
属性は、パーティションをフォーマットし、特定のパーティションのマウントポイントを定義するために使用されます。files
属性は、ファイルシステムのファイルの作成に使用できます。先に述べた属性のそれぞれについて、次のセクションで説明します。
4.2.2.1.1.1 disks
属性 #
disks
属性は、これらのデバイス上でパーティションを定義できるデバイスのリストです。disks
属性には、少なくとも1つのdevice
属性が含まれている必要があり、その他の属性はオプションです。次の例では、単一の仮想デバイスを使用し、ディスクを4つのパーティションに分割します。
{ "ignition": { "version": "3.0.0" }, "storage": { "disks": [ { "device": "/dev/vda", "partitions": [ { "label": "root", "number": 1, "typeGuid": "4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709" }, { "label": "boot", "number": 2, "typeGuid": "BC13C2FF-59E6-4262-A352-B275FD6F7172" }, { "label": "swap", "number": 3, "typeGuid": "0657FD6D-A4AB-43C4-84E5-0933C84B4F4F" }, { "label": "home", "number": 4, "typeGuid": "933AC7E1-2EB4-4F13-B844-0E14E2AEF915" } ], "wipeTable": true } ] } }
4.2.2.1.1.2 raid
属性 #
raid
は、RAIDアレイのリストです。raid
の次の属性は必須です:
- level
特定のRAIDアレイのレベル(linear、raid0、raid1、raid2、raid3、raid4、raid5、raid6)
- devices
絶対パスで参照されるアレイ内のデバイスのリスト
- name
mdデバイスに使用される名前
次に例を示します。
{ "ignition": { "version": "3.0.0" }, "storage": { "raid": [ { "devices": [ "/dev/sda", "/dev/sdb" ], "level": "raid1", "name": "system" } ] } }
4.2.2.1.1.3 filesystems
属性 #
filesystems
には次の属性が含まれている必要があります:
- device
デバイスへの絶対パス。通常、物理ディスクの場合は
/dev/sda
- format
ファイルシステム形式(Btrfs、Ext4、xfs、vfat、またはswap)
注記SLE Microの場合、
root
ファイルシステムはBtrfsにフォーマットする必要があります。
次の例は、filesystems
属性の使用方法を示しています。/opt
ディレクトリは、/dev/sda1
パーティションにマウントされ、Btrfsにフォーマットされます。デバイスは消去されません。
次に例を示します。
{ "ignition": { "version": "3.0.0" }, "storage": { "filesystems": [ { "device": "/dev/sda1", "format": "btrfs", "path": "/opt", "wipeFilesystem": false } ] } }
普通、通常のユーザのホームディレクトリは/home/USER_NAME
ディレクトリにあります。デフォルトでは/home
がinitrdにマウントされないので、ユーザを正しく作成するには、このマウントを明示的に定義する必要があります。
{ "ignition": { "version": "3.1.0" }, "passwd": { "users": [ { "name": "root", "passwordHash": "PASSWORD_HASH", "sshAuthorizedKeys": [ "ssh-rsa SSH_KEY_HASH" ] } ] }, "storage": { "filesystems": [ { "device": "/dev/sda3", "format": "btrfs", "mountOptions": [ "subvol=/@/home" ], "path": "/home", "wipeFilesystem": false } ] } }
4.2.2.1.1.4 files
属性 #
files
属性を使用して、マシンに任意のファイルを作成できます。デフォルトのパーティション方式の外部でファイルを作成するには、filesystems
属性を使用してディレクトリを定義する必要があることに注意してください。
次の例では、ホスト名がfiles
属性を使用して作成されます。ファイル/etc/hostname
はsl-micro1のホスト名で作成されます。
JSONでは、ファイルモードを420
などの10進数で指定できることに注意してください。
JSON:
{ "ignition": { "version": "3.0.0" }, "storage": { "files": [ { "overwrite": true, "path": "/etc/hostname", "contents": { "source": "data:,sl-micro1" }, "mode": 420 } ] } }
4.2.2.1.1.5 directories
属性 #
directories
属性は、ファイルシステムに作成されるディレクトリのリストです。directories
属性には、少なくとも1つのpath
属性が含まれている必要があります。
次に例を示します。
{ "ignition": { "version": "3.0.0" }, "storage": { "directories": [ { "path": "/home/tux", "user": { "name": "tux" } } ] } }
4.2.2.1.2 ユーザ管理 #
passwd
属性は、ユーザを追加するために使用されます。Cockpitなどの一部のサービスでは、root以外のユーザを使用してログインする必要があるため、ここで非特権ユーザを少なくとも1人定義します。または、6.2項 「ユーザの追加」の説明に従って、実行中のシステムからこのようなユーザを作成できます。
システムにログインするには、root
と通常のユーザを作成し、それぞれのパスワードを設定します。たとえば、openssl
コマンドを使用して、パスワードをハッシュする必要があります。
openssl passwd -6
このコマンドは、選択したパスワードのハッシュを作成します。このハッシュをpassword_hash
属性の値として使用します。
次に例を示します。
{ "ignition": { "version": "3.0.0" }, "passwd": { "users": [ { "name": "root", "passwordHash": "PASSWORD_HASH", "sshAuthorizedKeys": [ "ssh-rsa SSH_KEY_HASH USER@HOST" ] } ] } }
users
属性には、少なくとも1つのname
属性が含まれている必要があります。ssh_authorized_keys
は、ユーザのsshキーのリストです。
4.2.2.1.3 systemd
サービスの有効化 #
systemd
属性で指定して、systemd
サービスを有効にできます。
次に例を示します。
{ "ignition": { "version": "3.0.0" }, "systemd": { "units": [ { "enabled": true, "name": "sshd.service" } ] } }
4.2.2.2 YAML形式ファイルからJSON形式ファイルへの変換 #
JSONは、構造化データを保存するための汎用的なファイル形式です。Ignitionなどのアプリケーションは、設定の保存と取得にJSONを使用します。JSONの構文は複雑で人間には読みにくいため、YAMLという、よりわかりやすい形式で設定を記述し、それをJSONに変換することができます。
4.2.2.2.1 YAMLファイルからJSON形式への変換 #
YAMLファイルに記述したIgnition固有の文法をJSON形式に変換するにはbutane
ツールを使用します。このツールではYAMLファイルの構文も検証されるので、構造に潜むエラーを把握できます。butane
の最新バージョンを使用する場合は、次のリポジトリを追加します。
>
sudo
zypper ar -f \ https://download.opensuse.org/repositories/devel:/kubic:/ignition/openSUSE_Tumbleweed/ \ devel_kubic_ignition
openSUSE_Tumbleweed
を、使用しているディストリビューションに応じて次のいずれかに置き換えます。
'openSUSE_Leap_$releasever'
15.5
これで、butane
ツールをインストールできるようになりました。
>
sudo
zypper ref && zypper in butane
そのインストールが完了すると、次のコマンドを実行してbutane
を呼び出すことができます。
>
butane -p -o config.ign config.fcc
config.fcc
は、YAML設定ファイルへのパスです。config.ign
は、出力するJSON設定ファイルへのパスです。-p
コマンドオプションを使用すると、出力ファイルに改行が追加されるため、読みやすくなります。
5 DASDディスク上への生ディスクイメージの展開 #
SLE Microを20GB DASDディスクに展開するには、次の手順に従います。
wget
またはcurl
を使用して生ディスクイメージをダウンロードします。次に例を示します。>
curl -L0kOイメージを抽出します。
>
unpack xz -dBUILD_IDENTIFICATION.raw.xz20GBのデバイス名を検索して保存する変数をエクスポートします。
#
export SMDASD=$(lsdasd -s | grep 20480MB | tr -s [:blank:] | cut -d' ' -f3)ディスクをフォーマットします。
ディスクを初めてフォーマットする場合、次のコマンドを実行します。
#
dasdfmt -b 4096 -y -p /dev/$SMDASDディスクがフォーマット済みである場合、次のコマンドを実行します。
#
dasdfmt -b 4096 -M quick -y -p /dev/$SMDASD
生ディスクイメージをディスクにコピーします(この場合、ディスク名は/dev/dasdcです)。
dd if=IMAGE_NAME.raw status=progress of=/dev/dasdc bs=4k
実行中のLinuxをシャットダウンします。
#
init 02番目のDASDミニディスクをx3270端末で起動して、SLE Microを起動します。
#
ipl 101
6 展開後の手順 #
6.1 CLIからのSLE Microの登録 #
展開プロセス中にCombustion script
を使用してシステムを登録しなかった場合は、実行中のシステムから登録できます。
SUSE Customer CenterでSLE Microを登録するには、次の手順に従います。
transactional-update register
を次のように実行します。#
transactional-update register -rREGISTRATION_CODE -e EMAIL_ADDRESSローカル登録サーバで登録するには、さらに次のようにサーバへのURLも入力します。
#
transactional-update register -rREGISTRATION_CODE -e EMAIL_ADDRESS \ --url "https://suse_register.example.com/"REGISTRATION_CODEは、SLE Microのコピーで受け取った登録コードで置き換えます。EMAIL_ADDRESSは、各自または各自の組織が登録の管理に使用しているSUSEアカウントに関連付けられたEメールアドレスで置き換えます。
システムを再起動して、最新のスナップショットに切り替えます。
これで、SLE Microが登録されました。
このセクションの説明対象以外の情報については、SUSEConnect --help
でのインラインドキュメントを参照してください。
6.2 ユーザの追加 #
SLE Microでは、SSH経由でのログインやCockpitへのアクセスに非特権ユーザが必要であるため、該当するアカウントを作成する必要があります。
非特権ユーザをCombustionで定義している場合、この手順はオプションです。
次のように、
useradd
コマンドを実行します。#
useradd -m USER_NAME
そのアカウントのパスワードを設定します。
#
passwdUSER_NAME必要に応じて、ユーザを
wheel
グループに追加します。#
usermod -aG wheelUSER_NAME
7 法的事項 #
Copyright © 2006–2024 SUSE LLC and contributors. All rights reserved.
この文書は、GNUフリー文書ライセンスのバージョン1.2または(オプションとして)バージョン1.3の条項に従って、複製、頒布、および/または改変が許可されています。ただし、この著作権表示およびライセンスは変更せずに記載すること。ライセンスバージョン1.2のコピーは、「GNUフリー文書ライセンス」セクションに含まれています。
SUSEの商標については、https://www.suse.com/company/legal/を参照してください。その他の第三者のすべての商標は、各社の所有に帰属します。商標記号(®、™など)は、SUSEおよび関連会社の商標を示します。アスタリスク(*)は、第三者の商標を示します。
本書のすべての情報は、細心の注意を払って編集されています。しかし、このことは正確性を完全に保証するものではありません。SUSE LLC、その関係者、著者、翻訳者のいずれも誤りまたはその結果に対して一切責任を負いかねます。