BargeOS の ISO を re-master して immutable infrastructure

読了まで:約1分


BargeOS の ISO を re-master して immutable infrastructure

言う事を出来るかどうか試した。お [[Hyper-V]] 上でだけども。

実際に何をしたのか

[[BargeOS]] の ISO の [[initrd]] を編集して、設定等がカスタムされた [[BargeOS]] の bootable iso を作製し deploy する

いう様なコトの実証実験をやった。

成果物

下記の Makefile見よ。

ただし、下記の Makefile を動かすためには、

  • [[GNU make]]
  • [[curl]]
  • [[mkisofs]] ( [[cdrtools]] )

辺りが必要。

all: fetch mount copy umount extract patch pack iso

.PHONY: fetch mount copy umount extract patch pack iso

fetch:
curl -LO https://github.com/bargees/barge-os/releases/download/2.8.0-rc2/barge.iso

mount:
test -d iso || mkdir -p iso
sudo mount -o loop barge.iso iso

copy:
test -d iso-custom || mkdir -p iso-custom
cp -R iso/boot iso-custom/boot

umount:
sudo umount iso

extract:
test -d rootfs || mkdir -p rootfs
cd rootfs && xz -dc < ../iso-custom/boot/initrd | sudo cpio --quiet -i --make-directories

patch:
sudo cp -R overlays/* rootfs/
sudo chown root:root rootfs/etc/ssh/sshd_config
sudo chown root:root rootfs/etc/sudoers.d/bargees
sudo chown -R 1000:1000 rootfs/home/bargee/.ssh
sudo chmod 700 rootfs/home/bargee/.ssh
sudo chmod 600 rootfs/home/bargee/.ssh/authorized_keys

pack:
cd rootfs && sudo find . 2>/dev/null | sudo cpio -H newc -o | xz -9 -C crc32 -c >../iso-custom/boot/initrd

iso:
cd iso-custom \
&& mkisofs -v -l -r -J -o ../barge-custom.iso \
-b boot/isolinux/isolinux.bin \
-c boot/isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table . \
&& isohybrid ../barge-custom.iso

解説未満

  • 基本的に、実際に運用に使うには patch fetch 辺りは弄る必要がある
  • 次に、ディレトリ構造としては、だいたいこんな感じ:
  • code:-
  • workdir/ → ここを作業ディレクトリとすると
  • Makefile → 作業タスクのための Makefile
  • iso/ → 元の ISO データのマウント先
  • iso-custom/ → カスタムされた ISO ファイルを作製するための l working copy
  • overlays/ → rootfs へ上書きするファイル類置き場
  • rootfs/ → initrd から取り出された rootfs の中身
  • で、色々編集とかしたら、 make pack iso ISO [[ディスクイメージ]] を作製できる

確認したコト

  • [[nyarla.icon]] [[{ とりあえず [initrd]] を編集した ISO [[ディスクイメージ]] が boot する所までは確認した]
  • [[nyarla.icon]] [[{ ただ、一番最初の boot 時には何故か [Kernel Panic]] した。二度目以降は普通だったけど]

使い道

考えているヤツとしては、

  • 起動時に、自動的に SWAP と DATA パーティションを作る
  • [[docker-compose]] をなんらかの形でセットアップし、自動的にサービスを展開する様にする
  • ssh bargee アカウントを完全に無効化し、 [[ログインレス]] システムを作製
  • システムの更新時には ISO [[ディスクイメージ]] を切り替えて Blue-Green Deployment

言う様な事を ISO 運用が可能な IaaS でやる言う事を考えている。

アバターアイコン兼ロゴ

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。次に備えて待機中。

今は趣味でプログラミングをして生活しています。