目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / 生ディスクイメージを使用した、IBM Z DASDディスクへのSLE Microの展開

生ディスクイメージを使用した、IBM Z DASDディスクへのSLE Microの展開

発行日: 12/12/2024
概要

SLE Microでは、デバイスストレージに直接展開できる生イメージ(「事前構築のイメージ」とも呼ばれる)が提供されています。

目的

この記事では、IBM Zマシン上にSLE Microを展開する手順について段階を追って説明します。

所要時間

この記事の理解には20分ほどを要します。

目標

SLE Microをシステムに正常に展開します。

要件
  • Linuxが実行されているディスク。

  • 生イメージを展開し、SLE Microが実行されるディスク。

  • 設定メディアとして機能するディスク。

1 事前構築のイメージについて

事前構築のイメージとは、実行中のオペレーティングシステムを、すぐに使用できる形で表したものです。これらのイメージは、インストーラを使用する従来の方法でインストールするのではなく、ターゲットホストのハードディスクにコピーします。このトピックでは、これらの事前構築のイメージに関する基本的な情報について説明します。

事前構築のイメージは、そのイメージで提供されているツールを使用して、最初のブート時に設定することを目的としています。ブートローダは、1.2項 「最初のブートの検出」で説明されているように最初のブートを検出します。各イメージにはデフォルトでマウントされるサブボリュームが付属しており、最初のブート設定時に変更できます。サブボリュームに関する詳細については、1.1項 「デフォルトパーティショニング」を参照してください。

1.1 デフォルトパーティショニング

事前構築のイメージは、デフォルトのパーティション方式で用意されています。このパーティションは、最初のブート時にIgnitionまたはCombustionを使用して変更できます。

重要
重要: Btrfsはルートファイルシステムに必須である

デフォルトのパーティション方式を変更する場合は、ルートファイルシステムをBtrfsにする必要があります。

イメージごとに次のサブボリュームがあります。

/home
/root
/opt
/srv
/usr/local
/var

/etcディレクトリはoverlayFSとしてマウントされ、そこでは上位ディレクトリが/var/lib/overlay/1/etc/にマウントされます。

デフォルトでマウントされているサブボリュームは、/etc/fstabx-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つのフェーズで構成されます。どのフェーズもスキップせず、次に示す順序に従ってください。

  1. DASDディスクの有効化 - 展開を開始する前に、使用するすべてのディスクが利用可能でアクティブであることを確認する必要があります。詳細については、3項 「マシンの準備」を参照してください。

  2. 設定デバイスの準備 - ネットワークの設定、ユーザの追加、システムの登録を行うには、4項 「設定ディスクの準備」に記載されている手順に従って設定を準備します。

  3. 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が展開されます。

コマンド出力にディスクが表示されない場合は、ディスクを有効にする必要があります。次の手順に従います。

  1. 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
  2. 次のコマンドを使用してディスクを有効にします。

    # chzdev -eDISK_ID

    たとえば、ディスク0.0.0101を有効にするには、次のコマンドを実行します。

    # chzdev -e 0.0.0101
  3. lsdasdコマンドの出力でディスクがアクティブであることを確認します。

4 設定ディスクの準備

ヒント
ヒント: 仮想ディスクと物理ディスク

運用環境の展開には仮想ディスクが適しており、開発には物理ディスクが適しています。

インストールプロセス中に、ユーザやディレクトリを定義したり、SSHキーを提供したりするための複雑な設定を渡すことができます。そのためには、完全な設定を保存する設定デバイスを作成します。次の例で、このようなデバイスを作成する方法について説明します。

  1. 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の値またはディスクサイズを使用します。

  2. ディスクをフォーマットします。フォーマットすると、そのディスク上のデータはすべて削除されることに注意してください。

    # dasdfmt -b 4096 -y -p /dev/dasdb
  3. パーティションを作成します。

    # parted /dev/dasdb mkpart ext2 0% 100%
  4. パーティションをフォーマットします。

    # mkfs.ext4 /dev/dasdb1
  5. パーティションにignitionというラベルを付けます。

    # e2label /dev/dasdb1 ignition
  6. ファイルシステムを確認します。

    # blkid
  7. パーティションをマウントします。

    # mount /dev/dasdb1 /mnt
  8. IgnitionまたはCombustion、あるいはその両方のディレクトリ構造を準備します。Ignitionの場合、次のコマンドを実行します。

    # mkdir -p  /mnt/ignition

    Combustionの場合、次のコマンドを実行します。

    # mkdir -p /mnt/combustion
  9. SSH公開鍵を/mnt/combustionssh_key.pubとしてコピーします。

  10. 説明に従ってさらに設定を準備します。

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
ヒント
ヒント: IgnitionとCombustionの併用

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 Ignitionを使用したSLE Micro展開の設定

Ignitionは、最初のブート時に仕様に従ってシステムを設定できるプロビジョニングツールです。

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/hostnamesl-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ディスクに展開するには、次の手順に従います。

  1. wgetまたはcurlを使用して生ディスクイメージをダウンロードします。次に例を示します。

    > curl -L0kO
  2. イメージを抽出します。

    > unpack xz -dBUILD_IDENTIFICATION.raw.xz
  3. 20GBのデバイス名を検索して保存する変数をエクスポートします。

    # export SMDASD=$(lsdasd -s | grep 20480MB | tr -s [:blank:] | cut -d' ' -f3)
  4. ディスクをフォーマットします。

    • ディスクを初めてフォーマットする場合、次のコマンドを実行します。

      # dasdfmt -b 4096 -y -p /dev/$SMDASD
    • ディスクがフォーマット済みである場合、次のコマンドを実行します。

      # dasdfmt -b 4096 -M quick -y -p /dev/$SMDASD
  5. 生ディスクイメージをディスクにコピーします(この場合、ディスク名は/dev/dasdcです)。

    dd if=IMAGE_NAME.raw status=progress  of=/dev/dasdc bs=4k
  6. 実行中のLinuxをシャットダウンします。

    # init 0
  7. 2番目のDASDミニディスクをx3270端末で起動して、SLE Microを起動します。

    # ipl 101

6 展開後の手順

6.1 CLIからのSLE Microの登録

展開プロセス中にCombustion scriptを使用してシステムを登録しなかった場合は、実行中のシステムから登録できます。

SUSE Customer CenterでSLE Microを登録するには、次の手順に従います。

  1. 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メールアドレスで置き換えます。

  2. システムを再起動して、最新のスナップショットに切り替えます。

  3. これで、SLE Microが登録されました。

注記
注記: その他の登録オプション

このセクションの説明対象以外の情報については、SUSEConnect --helpでのインラインドキュメントを参照してください。

6.2 ユーザの追加

SLE Microでは、SSH経由でのログインやCockpitへのアクセスに非特権ユーザが必要であるため、該当するアカウントを作成する必要があります。

非特権ユーザをCombustionで定義している場合、この手順はオプションです。

  1. 次のように、useraddコマンドを実行します。

    # useradd -m USER_NAME
  2. そのアカウントのパスワードを設定します。

    # passwdUSER_NAME
  3. 必要に応じて、ユーザをwheelグループに追加します。

    # usermod -aG wheelUSER_NAME