2014年8月4日月曜日

「ESXi 5」 で再起動しても、設定(SSHキー)を残す方法


ども。なのまるです!

ようやくESXi5系を本格的に使い始めてきたんですが、ちょっとはまったのでメモです!
基本的にハイパーバイザーであるESXiは、再起動すると一部のファイルを除いてハイパーバイザー内のファイルが初期化されてしまいます。

もくじ



ESXi4では

ESXi4では、以下で紹介している方法で残しておくことが出来たんですが、ESXi5になってから使えなくなりました。。。


ESXi5系 では

ESXi5では、4と同じ方法では設定が保存されませんでした!
調べてみるといくつか方法があるようで・・・
  • state.tgzを作成する
  • boot.cfgを書き換えて、任意のtgzファイルを展開する
  • onetime.tgzに入れる

state.tgzを作成する

いくつかある方法の中で、「state.tgzを作成する」を選択することとします。
理由はVMwareのKnowledge Baseで紹介されていたから!


手順

  • state.tgz を展開する
  • local.tgz を展開する
  • 入れたいデータを入れる
  • local.tgz を作成する
  • state.tgz を作成する


state.tgz を展開する


cd /tmp
tar zxf /bootbank/state.tgz


local.tgz を展開する


cd /tmp
mkdir /tmp/local
tar zxf local.tgz -C local


入れたいデータを入れる(SSHキー)

デフォルトだと、こんなファイルが入っていたの(主に /etc 以下のファイル)で、ここに何か追加する
etc/vmware/ssl/rui.key
etc/vmware/ssl/rui.crt
etc/vmware/hostd/hostsvc.xml
etc/vmware/hostd/vmAutoStart.xml
etc/vmware/hostd/pools.xml
etc/vmware/esx.conf
etc/vmware/dvsdata.db
etc/vmware/license.cfg
etc/vmware/.backup.counter
etc/vmware/vmware.lic
etc/vmware/locker.conf
etc/vmware/vpxa/vpxa.cfg
etc/vmsyslog.conf.d/hostd.conf
etc/vmsyslog.conf.d/vpxa.conf
etc/vmsyslog.conf.d/fdm.conf
etc/security/access.conf
etc/ssh/ssh_host_rsa_key
etc/ssh/ssh_host_dsa_key
etc/ssh/ssh_host_rsa_key.pub
etc/ssh/ssh_host_dsa_key.pub
etc/chkconfig.db
etc/resolv.conf
etc/keymap
etc/group
etc/dhclient-vmk0.leases
etc/random-seed
etc/vmsyslog.conf
etc/shadow
etc/hosts
etc/sfcb/sfcb.cfg
etc/sfcb/uuid
etc/sfcb/repository/root/config/omc_config.idx
etc/sfcb/repository/root/config/omc_config
etc/sfcb/repository/root/config/omc_namespaceconfig
etc/sfcb/repository/root/config/omc_namespaceconfig.idx
etc/sfcb/repository/root/interop/sfcb_registeredprofile
etc/sfcb/repository/root/interop/cim_indicationfilter.idx
etc/sfcb/repository/root/interop/sfcb_registeredprofile.idx
etc/sfcb/repository/root/interop/cim_indicationhandlercimxml.idx
etc/sfcb/repository/root/interop/cim_listenerdestinationcimxml.idx
etc/sfcb/repository/root/interop/cim_indicationsubscription.idx
etc/ntp.conf
etc/ntp.drift
今回は例として、rootのSSH公開鍵を入れます!
vi /etc/ssh/keys-root/authorized_keys
cp -rp /etc/ssh/keys-root /tmp/local/etc/ssh


local.tgz を作成する

どうやら、local.tgzにはファイルしか入っていないようなので、以下のようなコマンドでファイルのみがtgzに入るように仕込みます。(そのまま作ってもいい気がするけど・・・)
cd /tmp/local
find etc -type f -print0 | xargs -0 tar cvzf ../local.tgz

※補足
本当はxargsで渡すやり方だとファイル数が多くなった時に、抜けるファイルが出てくるんで非推奨なんですが、ESXiのtarコマンドには「-T」オプションが無いので取り急ぎこのコマンドで対処しています。
findの結果をtarでアーカイブしたい

state.tgz を作成する

cd /tmp/
tar cvzf state.tgz local.tgz
cp state.tgz /bootbank/

もしくは
tar cvzf /bootbank/state.tgz local.tgz

まとめ


  • もう、これでバッチリですね!
  • ESXi4と同じようにしたい場合は「/bootbank/onetime.tgz」を使うといいと思います!
  • ちゃんとサポート取れる情報源ではないので、自己責任でお願いします!

Zenback