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っぽいので表示がでるので、ちょっと見にくいかも。 逆にいうと、コード書くときは操作しやすい?

esxcli

 esxcli  network nic set

などできるが、基本的には「変更」であって、新規とか廃棄はできないっぽい? つかわないでよさそう。

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のアドレスが付与されている。