Packer武者修行
今日気付いたことを書く。
RHEL6.5をESXi5.5にkickstartでインストールする話。
ISOチェクサムは時間がかかる。
SHA256はやり過ぎたかな。
それだけで合計4分近くかかる。
ローカルのキャッシュで2分。
ESXi側のキャッシュで2分。
チェクサムをnoneにしたら問答無用で3-4GBあるISOを送りつける。
MD5で改善しないか時間を測りたい。
output_directoryは動的に作るべき。
remote_datastoreに、非rootユーザーがフォルダ作成できるようにしていたが、それだけではダメだ。
既にフォルダがあるとbuiderがエラーで終わる。
みたいに重複を避けるようにした方がいい。
Linuxのks.cfgのカスタマイズが必要。
rootパスワードなど。
Packerでks.cfgをカスタマイズすることはできない。
自前のシェルを挟んで、vm単位でks.cfgを作成して、それらをPackerに変数で流し込むようにしよう。
でも、Packerのssh_passwordやらは平文のままだ。すごい中途半端。でもks.cfgはhttpで公開するので、やはりやるべきだろう。
ESXiのVNCポートを設定しないといけない。たまたまCIMポートが空いてて使えてしまえたけど、vCenter Applianceのwebクライアントを使っていると、使えるポートが見つからなくなる。
5988と5989あたり。
sshの待ち時間はデフォルトの20分がいい。
10分がギリギリのラインで、ks.cfg次第では失敗ばかりする。今日はここにはまっていた。
boot_commandは癖がある。
"<esc><wait>",
とりあえず区切る。
"linux ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/kickstart/ks-{{user `vm_name`}}.cfg ip={{user `ip`}} netmask={{user `netmask`}} gateway={{user `gateway`}} ksdevice={{user `ksdevice`}}"
区切った理由は、稀にbootコマンドを受け付けたGUI側で、途中の文字列から受け取ってた節があるので区切った。waitも入れた。
今回ksdeviceにはvmnic名を入れた。そうしないとks.cfgまでたどり着けなかった。
これは超絶はまった。
eth0でもいけるのかな。。。
ネットワークまわりは不思議だ。
ks.cfgにも設定あるんだが、どうなってんだか。
なんかvmware-toolsが入ってない。
ここはまだ深掘りできてない。
Packerが何かやろうとしていたみたいなんだが、インストールはできてない。
post-processorsを書いてあげないと、buiderはインベントリから登録解除してしまうので、仮想マシンがすぐ使えない。
ふむ、そういう意味では、buider用のESXiホストと、post-processor用のESXiホストは分けてもいいのか。
残骸のようにデータストア上にある仮想マシンをwebクライアント経由でインベントリ登録して起動してみたら、ややこしいことになった。
System eth0が動いてない。
Auto eth1なるものが追加され、デバイスが奪われた。MACアドレス使われてるよ、とほほ。
これをデバッグするのは大変そうだ。
provioningはまだ試してない。
いくつかのミドルをインストールしたい。
しかも、バージョンアップとフィックスにも耐えられる仕組みにしたい。
テンプレートになるPackerのJSONはあまりいじりたくない。
シェルをアップロードして、シェルでやりたい。
そのシェルに渡す引数をPackerの変数にしときたい。
インストール資材は、Packerがあげるhttpサーバからwgetできないだろうか。別サーバーでもいい。
RHEL6系、RHEL7系、Win7、Win10、Winサーバ系。
OSのみインストールと、ミドルのみインストールと、IDEのみインストールと、両方インストールの選択ができるように考えてはいるが、細かいのをいるいらない言われそうでたぶん纏まらない。
自動化としては、IDEの設定もしたい。
もはやPackerから離れまくってる。
packer-windows-pluginはまだ使用していない。使う予定。WinRMもはまるのかな。