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