Portal:MicroOS/Ignition
初回起動時の設定
事前構築済みイメージからの起動ののち、お使いのシステムにアクセスできるようにするため (DVD を利用した場合、既定では Ignition や Combustion が動作しません) 、初回起動時に設定ファイルを指定する必要があります。少なくとも root ユーザのパスワードについては必ず設定してください。 openSUSE MicroOS のうち、どれを利用しているのかによりますが、下記のような設定システムに対応しています:
- Ignition
Fedora CoreOS を発祥としたシステムで、 openSUSE MicroOS でも完全なサポートを提供しています。主に初心者には最適です。下記の クイックスタート をお読みください。 - Combustion
openSUSE MicroOS プロジェクトの一部として作成されているシステムで、 Ignition よりもパワフルで柔軟な仕組みを提供しています。このシステムでは bash のプログラミングスキルが必要となります。詳しくは Combustion クイックスタート をお読みください。 - Cloud-Init
openSUSE MicroOS のうち、 OpenStack Cloud 向けの仕組みでのみ使用されているシステムです。詳しくは Cloud-Init クイックスタート をお読みください。 - Ignition および Combustion のスクリプトは、 Ignition & Combustion Config Generator で生成することができます。
Ignition クイックスタート
初回の起動時、システムは Ignition を利用してシステムの設定を行おうとします。設定は、 MicroOS を含むメインディスクとは別に、 ignition ディレクトリ以下に config.ign という名前のファイルが存在するディスクを用意します。このディスクは ISO イメージや USB メモリ、フロッピィディスク等、お使いの仮想システムやハードウエアで対応可能な任意のメディアでかまいません。
どのようなメディアを利用した場合でも、ボリュームラベルには ignition という名前を設定します。このメディア内には ignition というディレクトリを作成し、その中に config.ign ファイルを配置します。具体的には、ディレクトリ構造は下記のようになります:
<ルートディレクトリ>
└── ignition
└── config.ign
config.ign の例:
{
"ignition": { "version": "3.1.0" },
"passwd": {
"users": [
{
"name": "root",
"passwordHash": "pemFK1OejzrTI"
}
]
}
}
ここで、 passwordHash の値には
# openssl passwd
を実行して得られたパスワードハッシュを指定します。上記は opensuse と入力した場合の例です。
USB メモリ
ベアメタルインストールや Raspberry Pi 、もしくはその他の ARM イメージの場合、 USB メモリに config.ign を配置するのが最適です。
この方法を使用する場合の要件は下記のとおりです:
- USB メモリは MicroOS で対応可能な任意のファイルシステム (FAT, EXT4 等) でフォーマットしておく必要があります。
- パーティションのラベルには
ignitionという名前を設定しておく必要があります (ラベルは小文字で指定します。また、 EXT4 の場合はe2label /dev/sdX1 ignitionコマンドで設定ができます) 。 - あとは作成したパーティションをマウントし、上述のディレクトリ構造を作成して
config.ignファイルを配置します。
IDO イメージの作成
仮想マシンで利用する場合は、 config.ign ファイルを指定する際に最適な方法が ISO イメージの作成です。
下記のような手順でディレクトリ構造とファイルを作成してください:
# mkdir -p disk/ignition # touch disk/ignition/config.ign
あとは disk/ignition/config.ign ファイルをエディタで開き、上記の例などの内容を記述して保存します。
あとは mkisofs で ISO イメージを作成するだけです:
# mkisofs -o ignition.iso -V ignition disk
作成できた ignition.iso ファイルをお使いの仮想マシンにマウントすれば利用できます。
libvirt 内での fw_cfg qemu 機能の使用
QEMU/KVM 環境で仮想マシンの管理に libvirt を利用している場合は、作成した仮想マシンの libvirt XML 内で Ignition ファイルを設定することができます。この場合、 virt-manager UI か virsh edit をお使いください。
XML ファイル内では、 <domain> セクション内に下記の XML セクションを挿入します:
<sysinfo type="fwcfg"> <entry name="opt/com.coreos/config" file="/location/for/your/file/config.ign"/> </sysinfo>
virt-install を実行する時点でも config.ign を指定することができます。この場合は --sysinfo オプションを使用します:
--sysinfo type=fwcfg,entry0.name="opt/com.coreos/config",entry0.file="/location/for/your/file/config.ign" \
butane を利用した設定ファイルの作成
Ignition は JSON 形式で設定を行いますので、機械的な処理に際しては高速で簡易な手段となっています。しかしながら人間が読み書きするには少しわかりにくい構造です。このような問題を解決するためには、下記のように二段階の設定プロセスを踏むのがよいでしょう:
- YAML 形式での Butane 設定ファイルを作成する。
- あとは butane を実行して YAML ファイルを JSON Ignition ファイルに変換する。
YAML ファイルから JSON ファイルへの転写の際、 butane は YAML ファイルの書式を検証しますので、 MicroOS を起動する前にエラーを検知することができます。
なお、 Butane はコンテナに対応した環境で利用できる [コンテナ](https://en.opensuse.org/Portal:Container/Image/butane) が提供されているほか、互換システムであればインストールして利用することもできます:
butane の最新版は Kubic Devel リポジトリで提供されています:
Tumbleweed の場合:
# zypper ar -f https://download.opensuse.org/repositories/devel:/kubic:/ignition/openSUSE_Tumbleweed/ devel_kubic_ignition
Leap の場合:
# zypper ar -f 'https://download.opensuse.org/repositories/devel:/kubic:/ignition/openSUSE_Leap_$releasever/' devel_kubic_ignition
SLE 15 の場合:
# zypper ar -f https://download.opensuse.org/repositories/devel:/kubic:/ignition/SLE_15/ devel_kubic_ignition
上記のいずれかを実行後、下記を実行します (全ディストリビューション向け):
# zypper in butane
実行
# butane -p -o config.ign config.yaml
ここで、 config.yaml には YAML の入力ファイルを、 config.ign には JSON の出力ファイルを指定します。また -p を指定することで、改行やインデントできれいに整形された出力を得ることができます。
より高度な使いかた
Ignition そのものや提供されている機能について詳しく知りたい場合は、 公式ドキュメンテーション または下記の一般的な例をお読みください。
FCC/YAML 例
root ユーザに対するパスワードと SSH 鍵の設定
variant: fcos
version: 1.0.0
passwd:
users:
- name: root
password_hash: "`openssl passwd -6` 等で作成したハッシュ"
ssh_authorized_keys:
- ssh-rsa long...key user@host
新しいユーザの作成
通常、一般ユーザのホームディレクトリは /home/<ユーザ名> に設定されます。ですが、既定では initrd は /home をマウントしないため、問題なくユーザを作成できるようにするには、マウントを明示的に指定する必要があります。詳しくは マウントの例 をお読みください。
variant: fcos
version: 1.1.0
storage:
filesystems:
- path: /home
device: "/dev/sda3, /dev/mmcblk0p2, /dev/disk/by-label/ROOT のような形式でのルートデバイスのパス"
format: btrfs
wipe_filesystem: false
mount_options:
- "subvol=/@/home"
passwd:
users:
- name: root
password_hash: "`openssl passwd -6` 等で作成したハッシュ"
ssh_authorized_keys:
- ssh-rsa long...key user@host
マウント
既定でマウントされるサブボリュームは下記のとおりです:
- /
- /var
- /etc
- /root
その他のサブボリュームのほか、 /home や /opt のようなパーティションにアクセスするには、それらを Ignition の設定ファイル内で明示的に指定する必要があります。
variant: fcos
version: 1.0.0
storage:
filesystems:
- path: /opt
device: "/dev/sdXY"
format: btrfs
wipe_filesystem: false
ファイルの作成
上述の例 と同様に、既定で initrd がマウントするディレクトリ以外の箇所にファイルを作成したい場合は、 storage -> filesystem 以下に必要なマウントの設定を行う必要があります。
variant: fcos
version: 1.0.0
storage:
files:
- path: /var/test.txt
mode: 0644
overwrite: true
contents:
inline: "testcontents"
ホスト名の変更
ホスト名の設定は /etc/hostname ファイルの作成で行います。
variant: fcos
version: 1.0.0
storage:
files:
- path: /etc/hostname
mode: 0644
overwrite: true
contents:
inline: "kubic-1"
サービスの有効化
systemd のサービスを有効化するには、下記のように設定します。
variant: fcos
version: 1.0.0
systemd:
units:
- name: sshd.service
enabled: true
さらなる例
Fedora Core OS ドキュメンテーション Web サイト では、様々な設定例が提供されています。
JSON 例
root ユーザに対するパスワードと SSH 鍵の設定
{
"ignition": { "version": "3.1.0" },
"passwd": {
"users": [
{
"name": "root",
"passwordHash": "`openssl passwd -6` 等で作成したハッシュ",
"sshAuthorizedKeys": [
"ssh-rsa long...key user@host"
]
}
]
}
}
新しいユーザの作成
通常、一般ユーザのホームディレクトリは /home/<ユーザ名> に設定されます。ですが、既定では initrd は /home をマウントしないため、問題なくユーザを作成できるようにするには、マウントを明示的に指定する必要があります。詳しくは マウントの例 をお読みください。
{
"ignition": { "version": "3.1.0" },
"storage": {
"filesystems": [
{
"path": "/home",
"device": "Path to the root device such as /dev/sda3, /dev/mmcblk0p2 or /dev/disk/by-label/ROOT",
"format": "btrfs",
"wipeFilesystem": false,
"mountOptions": [
"subvol=/@/home"
]
}
]
},
"passwd": {
"users": [
{
"name": "username",
"passwordHash": "`openssl passwd -6` 等で作成したハッシュ",
"sshAuthorizedKeys": [
"ssh-rsa long...key user@host"
]
}
]
}
}
マウント
openSUSE MicroOS ベースのイメージの場合、既定でマウントされるサブボリュームは下記のとおりです:
- /
- /var
- /etc
- /root
その他のサブボリュームのほか、 /home や /opt のようなパーティションにアクセスするには、それらを Ignition の設定ファイル内で明示的に指定する必要があります。
{
"ignition": { "version": "3.1.0" },
"storage": {
"filesystems": [
{
"path": "/opt",
"device": "/dev/sdXY",
"format": "btrfs",
"wipeFilesystem": false,
}
]
}
}
ファイルの作成
上述の例 と同様に、既定で initrd がマウントするディレクトリ以外の箇所にファイルを作成したい場合は、 storage -> filesystem 以下に必要なマウントの設定を行う必要があります。
{
"ignition": { "version": "3.0.0" },
"storage": {
"files": [
{
"path": "/var/test.txt",
"mode": 420,
"contents": {
"source": "data:,testcontents"
},
"overwrite": true
}
]
}
}
ホスト名の変更
ホスト名の設定は /etc/hostname ファイルの作成で行います。
{
"ignition": { "version": "3.0.0" },
"storage": {
"files": [{
"filesystem": "root",
"path": "/etc/hostname",
"mode": 420,
"overwrite": true,
"contents": { "source": "data:,kubic-1" }
}]
}
}
サービスの有効化
systemd のサービスを有効化するには、下記のように設定します。
{
"ignition": { "version": "3.0.0" },
"systemd": {
"units": [{
"name": "sshd.service",
"enabled": true
}]
}
}
さらなる例
Ignition ドキュメンテーション Web サイト でもいくつかの例が提供されています。