20150913: esxcliで遊ぶ¶
デプロイ¶
Windows上で試行することを考える。 まず、VMPlayerに対して、5.5を入れる。 VMware vSphere Hypervisor 5.5のisoをダウンロード。
https://my.vmware.com/jp/group/vmware/evalcenter?p=free-esxi5
この辺からダウンロードできる。Clientはインストールされている前提。
自動でCPUのVTなどはenableされるので、特に特殊な設定はいらない。 ネットワークはNATではなく、ホストオンリーで設定しておく。
とりあえず、
- mgmtの変更
- enable SSH をした。
# esxcli system version get
Product: VMware ESXi
Version: 5.5.0
Build: Releasebuild-1331820
Update: 0
調べた¶
どうやら、ESXiのコマンドラインは何種類かあるらしい。
esxcfg¶
esxcfg-vswitch -a vSwitch1
http://www4413u.sakura.ne.jp/wiki/36.html
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2078641
この辺が詳しい。
vim-cmd¶
vim-cmd hostsvc/net/vswitch_add hoge
みたいにできる。 YAMLっぽいので表示がでるので、ちょっと見にくいかも。 逆にいうと、コード書くときは操作しやすい?
vmkfstools¶
vmdk操作用。ファイルシステムはこれで操作?
操作の例¶
# vSwitchを作った
vim-cmd hostsvc/net/vswitch_add hoge
# esxcfg-vswitch -a hoge
# でもよさそう
# 消す
esxcfg-vswitch -d hoge2
esxcfg-vswitch -A vlan2 hoge
esxcfg-vswitch -A vlan3 hoge
esxcfg-vswitch -A vlan-all hoge
esxcfg-vswitch hoge -p vlan2 -v 2
esxcfg-vswitch hoge -p vlan3 -v 3
esxcfg-vswitch hoge -p vlan-all -v 4095
esxcfg-vswitch -l hoge
esxcli network nic list
などで、vmnicを確認する
VMのテンプレートデプロイ¶
自分でmgmt用のVMを作った時などを考える
http://qiita.com/binzume/items/096ce77f73b6e853c342
などをみると、原則、vmxを作っておいて登録すべきっぽい。vyOSのテンプレートを作ってみようと思う
::
/vmfs/volumes/datastore1/iso/vyos-1.1.6-amd64.iso
があるものとする
::
vmid=` vim-cmd vmsvc/createdummyvm vyos-templ /vmfs/volumes/datastore1/`
cd /vmfs/volumes/datastore1/vyos-templ
# これはsedじゃないといけないね
# echo guestOS = "otherlinux-64" >> vyos-templ.vmx
echo memsize = "512" >> vyos-templ.vmx
echo numvcpus = "1" >> vyos-templ.vmx
rm vyos-templ.vmdk vyos-templ-flat.vmdk
vmkfstools --createvirtualdisk 2G -d thin vyos-templ.vmdk
#迷子になったら、これでvmid得る
vim-cmd vmsvc/getallvms
vim-cmd vmsvc/reload $vmid
# 次に、localでのtemplate用mgmtを作成する
# これはuntagなネットワーク
vim-cmd hostsvc/net/vswitch_add templ_mgmt
esxcfg-vswitch -A untag templ_mgmt
esxcfg-vswitch templ_mgmt -p untag -v 0
esxcfg-vswitch -l hoge templ_mgm
vim-cmd vmsvc/get.networks $vmid
ethernet0.virtualDev = "e1000"
ethernet0.networkName = "untag"
ethernet0.addressType = "generated"
ethernet0.present = "TRUE"
ide0:0.deviceType = "cdrom-image"
ide0:0.fileName = "/vmfs/volumes/55f5304e-ab1a64a3-e8eb-000c295ba3fe/iso/vyos-1.1.6-amd64.iso"
ide0:0.present = "TRUE"
vim-cmd vmsvc/reload $vmid
vim-cmd vmsvc/power.on $vmid
コンソールをとって
vyos/vyos
して
install image
> yes, sda, yes, [enter], [enter], [enter], [password], [enter]
> passwordをtestにした
そのあと
poweroff
vim-cmd vmsvc/power.getstate $vmid
> Powered offであること
sed -i -e 's/ide0:0\..*//' vyos-templ.vmx
vim-cmd vmsvc/power.on $vmid
vyos:testで入る
configure
delete interface ethernet eth0 hw-id
set interface ethernet eth0 address 192.168.254.200/24
set service telnet
set service ssh
commit
save
exit
poweroff
> yes
VMを複製する¶
vim-cmd vmsvc/power.getstate $vmid
> Powered offであること
cd /vmfs/volumes/datastore1
mkdir vyos-clone1
cd vyos-clone1
# ディスクをレプリケーションする
vmkfstools -i ../vyos-templ/vyos-templ.vmdk ./vyos-clone1.vmdk
> vyos-clone1-flat.vmdk vyos-clone1.vmdk
ができます。
# 各種ファイルのコピー
cp ../vyos-templ/vyos-templ.vmx ./vyos-clone1.vmx
sed -i -e 's/vyos-templ/vyos-clone1/g' vyos-clone1.vmx
cp ../vyos-templ/*.nvram ./vyos-clone1.nvram
cp ../vyos-templ/*.vmsd ../vyos-clone1.vmsd
cp ../vyos-templ/*.vmxf ./vyos-clone1.vmxf
# ここで、eth0の生成されたMACアドレスを削除しておく
# こうしないと、cloneで作ったものとアドレスが被る。
sed -i -e 's/ethernet0.generatedAddress.*//' vyos-clone1.vmx
# cloneしたVMのpower on
vmid=`vim-cmd solo/registervm /vmfs/volumes/datastore1/vyos-clone1/vyos-clone1.vmx vyos-clone1`
vim-cmd vmsvc/getallvms
# VMをpower-onするが、replicaであるので、その"answer"をしたい
vim-cmd vmsvc/power.on $vmid &
sleep 1
vim-cmd vmsvc/message 6とすると
> Virtual machine message _vmx2:
> 2. button.uuid.copiedTheVM (I Copied It) [default]
などでるので、
vim-cmd vmsvc/message $vmid _vmx2 2
する
設定用サーバ¶
これは、動的なものでないので、最初から立ち上げる。 eth2に192.168.254.1をもつubuntuホストとした。 eth1はDHCPでNATしており、 eth0はmgmtのアドレスが付与されている。