CoreOSのLive ISO作るbash scriptを書きました
読了まで:約6分
概要: だれにも〜はんのうされない〜
こんにちま!
先週の病院を受診して薬を変えた結果、それなりに鬱から脱しつつある、 にゃるらコト岡村 直樹(25)です。皆様お久しぶりです。 もうちょっと更新頻度上げたいです。
で、そんな近状はまあどうでも良いとして、 僕は先ほど、布団にくるまって眠気に誘われながら、
@miyagawa さんの PostCast である Rebuild.FM の
Rebuild: 25: Immutable Infrastructure (Naoya Ito, Gosuke Miyashita)
を聴いておりました。
で、内容等についてはリンク先から PodCast 聴いてね! って感じなのですが、今回のエピソードの話題に上ったキーワードで、
とか有るのですが、こういうキーワードのコンテキストにおいて、 これからメジャーになるんじゃね? という Linux Distribution に、
というのが有ります。
この CoreOS 、というのは、どういう Linux か、と言うと、 次世代のサーバ OS、特に Immutable Infrastructure とか、 そういう感じの文脈において、それに特化した、 管理が用意なサーバ OS を作ろう! という感じの Linux です。
んで、この CoreOS、現時点(2013-11-07)において、
Vagrant VirtualBox
VMware
Amazon EC2
QEMU/KVM
OpenStack
Rackspace
PXE boot
のイメージは用意されているんですが、まだ Alpha な関係か、
_人人人人人人人人人人人人人人_ > Bootable ISO が無い!!! <  ̄ Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y  ̄
という状態なため、僕は、
え、ISO の持ち込める格安 VPS にぶっ込めないじゃん!クソ、こうなったら、よろしい、ならば作成戦争だ!
という感じになり、
[CoreOS の Live ISO を作る Bash スクリプト 11!!!111!!111! https://github.com/nyarla/coreos-live-iso/blob/master/makeiso.sh ]
を先日作りました。確か数日前ぐらい。 ちなみにリンク先は Github です。
で、このスクリプト(makeiso.sh
)は使いかたはものすごく簡単で、
bash
curl
tar
mkisofs
(これは大体の distribution でcdrtools
に含まれてる)
を用意した上で、
$ ./makeiso.sh
するだけで、CoreOS の Live ISO が作成できます。Yay !
で、このmakeiso.sh
なんですが、やってるコトとしては、
- CoreOS の PXE Boot 用の Kernel と Initrd を DL
- Bootloader として syslinux も DL
- それぞれのファイルを適切に配置
mkisofs
で ISO を作成- 上手に焼けましたー ♪
という感じです。いや、まあ Bash script なんで、 実物見た方が早いかもですが。
で、このmakeiso.sh
で作った ISO は、bootable かつコンパクトなので、 例えば、ISO イメージを持ち込める VPS にぶっ込んで CoreOS を VPS にインスコしたり、あるいは Live ISO として CoreOS の体験版みたいに使ったり、 もしくは、実際に USB メモリとか SD カードとかに焼いて、 サーバ実機に CoreOS をインスコするのに使ったり、 というコトができます。イエ-イ!
で、もし VPS なり実機に CoreOS をインストールする、という場合には、 coreos-install
コマンドを使って、
$ sudo coreos-install -d /dev/sda
という感じで CoreOS の blob images をストレージに配置した後、
$ sudo su -
でroot
になって、
# echo 1 > /sys/block/sda/device/rescan
して、/dev/sdX
にインストールされた CoreOS のパーティションを読み込ませ、
$ sudo mount /dev/sda9 /mnt
$ mkdir -p /mnt/overlays/home/core/.ssh
$ cp ~core/.ssh/authorized_keys /mnt/overlays/home/core/.ssh/
$ chmod 0700 /mnt/overlays/home/core/.ssh/
$ sudo umount /mnt
という感じで、authorized_keys
をインストールされた CoreOS の~/.ssh
に配置する必要があります。
何故これが必要かっていうと、CoreOS は ssh の鍵認証方式でしがログインできないからです。つまり秘密鍵なくすとログインすら不可。世は無情である。まあ、ログインできなくなった場合、VM 上で Live ISO を再 Boot させて、新しい方の鍵を登録すればなんとかなりますけどね。面倒ですけど。
で、あとmakeiso.sh
の注意点としては、
- ssh の認証鍵はデフォルトで iso を作ったマシンの
~/.ssh/id_rsa.pub
を使用 - CoreOS のバージョン等、ISO を作る際のパラメーターは決めうち これは
makeiso.sh
を直接編集して調整してください
という辺りでしょうか。
また今回書いたスクリプトである、
は、 README.md にも書いてある通り、 パブリックドメインとして著作権は放棄したので、 あとはもう似るなり焼くなり自由にお使いください。 っていうかこういう有益なスクリプトにライセンスつけるって合わないよね、と僕は思う。誰にでもかけそうだしね。誰に改造してもらってもうちっとマシにしてほしいという気持ちもあるけど。
というワケで、先日作った CoreOS's Live ISO を作るための Bash Script の話はそんな感じなんですが、実はその前に、Qiita と Gist の方に、
- Qiita: [[How to make a CoreOS's ISO file from pxe boot image - Qiita [キータ]] http://qiita.com/nyarla/items/957915697cb744deb4cb]
- Gist: How to make a CoreOS's ISO file from pxe boot image (this post is cross post with qiita.com)
というような記事を 英語で 書いておりました。
ただまあ、さすがに freenode の#coreos に流して Communication by English する勇気とやる気と根気がなかったので、数日前から放置しておりましたが、そうだ、これ Bash Script としてまとめた方が使い勝手良くね? とか思い、Public domain な Bash Script に落とし込んだ、というのが今回の話です。
まあ僕は最近、鬱の症状がまったくもって抜けんという感じで、 プログラミングとか全然できてなかったんですが、今週の月曜日からようやく体調が持ち直してきて、
意欲的に何かに取り組むってこんな感じだったんだ!
というのを実感しております。 いや、何だろう、このあふるるやる気。 何だろう、このハイテンション感。 まさかと思うけど、躁状態ではないよね?これ。 とか若干思わないでもないですが。
ま、そんな感じで、もう数ヶ月ぶりにやる気とか元気とかを取り戻してきたので、もうちょっと、ブログとかプログラミングとか、 そういった創作的な活動を増やしていきたいなーと思ってます。
と言うワケで以上、約一ヶ月ぶりの更新でした。 makeiso.sh
、よかった使ってみてください。
それでは。
ノシ
#FIXME