無人インストール¶
OmarOS ISOは、キーボードの前に誰もいなくても自分自身をインストールできます。インストーラーが、設定ファイルを含みcidataというラベルの付いた2つ目のドライブを見つけると、それをコピーし、セットアップウィザードを完全にスキップし、完成したシステムへ自動的に再起動します。特別なISOビルドも、追加のブートメニューエントリもありません。そのようなドライブが接続されていなければ何も変わらず、通常のウィザードが表示されます。
これにより、OmarOSは使い捨て開発環境のベースイメージとして最適になります。ProxmoxやPackerでVMを作成し、起動し、離席して、SSHで接続できます。cidataはcloud-initのNoCloudラベルです。そのため、一般的な仮想化ツールはすべてそのようなドライブの接続方法をすでに知っています。
設定ファイル¶
ファイルはまさにインストーラー自身のウィザードが書き込むものです。そのため、開始セットを得る最も簡単な方法は、(たとえばVMで)対話型インストールを1回実行し、/rootに書かれたものをコピーすることです。
| ファイル | 必須 | 目的 |
|---|---|---|
user_configuration.json |
はい | ディスク、ホスト名、タイムゾーン、キーボード |
user_credentials.json |
はい | ユーザー名とパスワードハッシュ |
user_full_name.txt |
いいえ | Gitのフルネーム |
user_email_address.txt |
いいえ | Gitのメールアドレス |
user_encrypt_installation.txt |
いいえ | 設定にdisk_encryptionブロックが含まれるときはtrue |
authorized_keys |
いいえ | SSH公開鍵(1行に1つ) |
tailscale_authkey |
いいえ | 初回起動時にtailnetに参加するためのTailscale認証キー |
user_credentials.json用のパスワードハッシュは、openssl passwd -6 "yourpassword"で生成してください。
user_credentials.jsonの代わりに、defer-provisioningという名前の空のファイルを置くこともできます。これにより、対話的にトリガーすることもできる同じ別の所有者に向けた準備インストールが実行されます。マシンは個人情報を一切持たずにインストールされ、最初に起動した人がキーボードを選び、ユーザーを作成します。これは、ドライブが誰の認証情報も含むべきではないイメージング用装置向けのモードです。
SSHアクセス¶
authorized_keysが存在する場合、インストールにより鍵はユーザーの~/.ssh/authorized_keysとして設定され、sshdが有効化され、そのためのファイアウォールが開きます。(標準のOmarOSインストールでは、opensshはサービスが無効でポートが閉じた状態で出荷されます。そのため、無人マシンはそうでなければ到達不能になります。)インストールはあなたの鍵を追加するだけであり、SSHデーモンの他の認証設定を緩めることはありません。
tailscale_authkeyが存在する場合、代わりにマシンは初回起動時にtailnetに参加します。TailscaleはISOに同梱されたパッケージからインストールされ、ファイアウォールはtailnetインターフェースを許可し、バックグラウンドジョブはマシンが実際にネットワークに接続するとすぐに参加処理を実行し、成功するまで再試行します。1つのドライブイメージで多くのマシンに対応できるよう、再利用可能で事前承認済みの鍵を使ってください。
cidataドライブを構築する¶
正しいラベルを持つファイルシステムであれば、何でも動作します。小さなISOが簡単な方法です。
mkdir cidata
cp user_configuration.json user_credentials.json authorized_keys cidata/
genisoimage -output cidata.iso -volid cidata -joliet -rock cidata/
次に、OmarOS ISOと並べてVMに接続します。完全なProxmoxの例は次のとおりです。
qm create 101 --name my-omaros \
--bios ovmf --machine q35 --cpu host --cores 4 --memory 8192 \
--ostype l26 --scsihw virtio-scsi-single \
--efidisk0 local-lvm:0,efitype=4m,pre-enrolled-keys=0 \
--scsi0 local-lvm:40,discard=on,iothread=1 \
--net0 virtio,bridge=vmbr0 --vga virtio --serial0 socket \
--ide2 local:iso/omaros.iso,media=cdrom \
--ide3 local:iso/cidata.iso,media=cdrom \
--boot order='scsi0;ide2'
qm start 101
ブート順序でディスクを最初に列挙しているのは意図的なものです。空のディスクは初回起動時にISOへフォールスルーし、その後はインストールされたシステムがディスクから起動します。
2つの注意事項¶
暗号化された無人インストールは完全に無人ではありません。初回起動時に誰かがLUKSパスフレーズを入力しなければなりません。そして、user_configuration.jsonのdisk_encryptionブロックにはそのパスフレーズが平文で含まれています。そのため、暗号化インストールから構築したcidataドライブは、それが秘密情報であることを認識して扱ってください。