脱vSphereClient (Apple信者向け)
最近、自宅マシンにESXiをインストールしました。
プライベートの端末がOSXということもあり、vSphereClientの利用がサポートされません(*)。
VirtualBox上のWindowsマシンにインストールして操作する、という利用方法もありますが、
vSphereClientを利用するのに、VirtualBoxを起動して、Windowsを起動して、vSphereClientを起動。
んで、GUI操作ぽちぽち。
めんどい!
実はある程度のことはESXiにSSH接続してコマンドラインで出来るんです!
今回はVM作成を実施してみます。
ESXiのインストールやストレージ、ネットワークは準備済みとします。
ほとんどはvim-cmdコマンドを利用します。
vim-cmd
サブコマンドを実施し、色々なことを実現できます。
[root@localhost:~] vim-cmd Commands available under /: hbrsvc/ internalsvc/ solo/ vmsvc/ hostsvc/ proxysvc/ vimsvc/ help [root@localhost:~] vim-cmd hostsvc Commands available under hostsvc/: advopt/ enable_ssh refresh_firewall autostartmanager/ firewall_disable_ruleset refresh_services datastore/ firewall_enable_ruleset reset_service datastorebrowser/ get_service_status runtimeinfo firmware/ hostconfig set_hostid net/ hosthardware standby_mode_enter rsrc/ hostsummary standby_mode_exit storage/ login start_esx_shell summary/ logout start_service vmotion/ maintenance_mode_enter start_ssh connect maintenance_mode_exit stop_esx_shell cpuinfo pci_add stop_service disable_esx_shell pci_remove stop_ssh disable_ssh queryconnectioninfo task_list enable_esx_shell querydisabledmethods updateSSLThumbprintsInfo
例えば、
vim-cmd hostsvc/enable_sshを実行すると、ESXiホストでssh接続が有効となります。
vim-cmd maintenance_mode_enterを実行すると、ESXiホストをメンテナンスモードにします。
とかです。
それではいってみよう。
今回はCentos6のVMを作成します。
- VM作成
ブランクVMを作成します。
[root@localhost:~] vim-cmd vmsvc/createdummyvm centos6-1 /vmfs/volumes/local_ssd 4
戻り値はVMのIDです。
[root@localhost:~] ls -l /vmfs/volumes/local_ssd/centos6-1_3/ total 1024 -rw------- 1 root root 1048576 May 10 10:42 centos6-1_3-flat.vmdk -rw------- 1 root root 465 May 10 10:42 centos6-1_3.vmdk -rw-r--r-- 1 root root 0 May 10 10:42 centos6-1_3.vmsd -rwxr-xr-x 1 root root 977 May 10 10:42 centos6-1_3.vmx [root@localhost:~] cat /vmfs/volumes/local_ssd/centos6-1_3/centos6-1_3.vmx .encoding = "UTF-8" config.version = "8" virtualHW.version = "11" nvram = "centos6-1_3.nvram" pciBridge0.present = "TRUE" virtualHW.version = "11" nvram = "centos6-1_3.nvram" pciBridge0.present = "TRUE" svga.present = "TRUE" pciBridge4.present = "TRUE" pciBridge4.virtualDev = "pcieRootPort" pciBridge4.functions = "8" pciBridge5.present = "TRUE" pciBridge5.virtualDev = "pcieRootPort" pciBridge5.functions = "8" pciBridge6.present = "TRUE" pciBridge6.virtualDev = "pcieRootPort" pciBridge6.functions = "8" pciBridge7.present = "TRUE" pciBridge7.virtualDev = "pcieRootPort" pciBridge7.functions = "8" vmci0.present = "TRUE" hpet0.present = "TRUE" floppy0.present = "FALSE" scsi0.virtualDev = "lsilogic" scsi0.present = "TRUE" scsi0:0.deviceType = "scsi-hardDisk" scsi0:0.fileName = "centos6-1_3.vmdk" scsi0:0.present = "TRUE" displayName = "centos6-1" guestOS = "other" uuid.bios = "56 4d fd a6 54 0c 8e 22-a5 d9 9a 10 df 9d be ae" uuid.location = "56 4d fd a6 54 0c 8e 22-a5 d9 9a 10 df 9d be ae" vc.uuid = "52 79 a6 30 04 b7 91 37-35 5d ad 4c 42 08 59 a4"
vmxファイル、vmdkファイル等おなじみのファイルが作成されています。
勝手に付加された「_3」はどこから来たのでしょう。
- ISOファイルアップロード
scpコマンドでCentOS6のisoファイルをdatastoreにアップロードします。
- VMリソース設定
最低限必要な箇所のみ設定します。
まずは以下を設定。
- CPU数 -> 2core
- メモリ値 -> 2GB
- ネットワーク -> 1つ
- CDROMデバイス
- ゲストOS種別
- VNC
[root@localhost:~] vi /vmfs/volumes/local_ssd/centos6-1_3/centos6-1_3.vmx 以下、編集 guestOS = "other" ↓ guestOS = "rhel6-64" 以下、追記 numvcpus = "2" memSize = "2048" ide1:0.startConnected = "TRUE" ide1:0.deviceType = "cdrom-image" ide1:0.fileName = "/vmfs/volumes/local_ssd/CentOS-6.6-x86_64-minimal.iso" ide1:0.present = "TRUE" ethernet0.virtualDev = "vmxnet3" ethernet0.networkName = "VM Network" ethernet0.addressType = "generated" ethernet0.present = "TRUE" RemoteDisplay.vnc.enabled="true" RemoteDisplay.vnc.port="5901" RemoteDisplay.vnc.password="password" RemoteDisplay.vnc.keyMap="jp"
ide1:0.fileNameはアップロードしたisoファイルのパス指定
ethernet0.networkNameはポートグループ名
RemoteDisplay.vnc.portはVNC接続するポート番号
後述しますがVNC接続する用のポートをESXiで開放する必要があります。
RemoteDisplay.vnc.passwordはVNC接続時のパスワード
次はディスクサイズを設定。
- ディスクサイズ -> 16GB
[root@localhost:~] vmkfstools -c 10g -d thin /vmfs/volumes/local_ssd/centos6-1_3/centos6-1_3-1.vmdk [root@localhost:~] vi /vmfs/volumes/local_ssd/centos6-1_3/centos6-1_3.vmx 以下、編集 scsi0:0.fileName = "centos6-1_3.vmdk" ↓ scsi0:0.fileName = "centos6-1_3-1.vmdk" [root@localhost:~] vmkfstools -U /vmfs/volumes/local_ssd/centos6-1_3/centos6-1_3.vmdk
元のvmdkファイルは削除して構いません。
- VM起動
[root@localhost:~] vim-cmd vmsvc/power.on 3 Powering on VM:
- コンソール接続
OSXの場合、デフォルトでVNCクライアントが備わっています。
Finderのメニューから[移動] - [サーバへ接続]を選択
vnc://
:<設定したポート番号>
vmxファイルに設定したパスワードを入力
コンソールの画面が表示されます。
セキュリティプロファイル定義
[root@localhost:~] cp /etc/vmware/firewall/service.xml /etc/vmware/firewall/service.xml.bak [root@localhost:~] chmod u+w /etc/vmware/firewall/service.xml [root@localhost:~] chmod +t /etc/vmware/firewall/service.xml 以下を<ConfigRoot>タグ内に追記 <service id='0140'> <id>vnc</id> <rule id='0000'> <direction>inbound</direction> <protocol>tcp</protocol> <port type='dst'>5901</port> </rule> <enabled>false</enabled> <required>false</required> </service> [root@localhost:~] chmod 444 /etc/vmware/firewall/service.xml
ポート開放
[root@localhost:~] esxcli network firewall refresh [root@localhost:~] esxcli network firewall ruleset list vnc false [root@localhost:~] esxcli network firewall ruleset set -r vnc -e true [root@localhost:~] esxcli network firewall ruleset set -r vnc -a true Already allowed all ip
このようにコマンドとVNC接続により、VMを構築できました。
細やかな設定は難しいところもありますが、
多くの機能を扱うことができます。
私は省エネのため、利用しない時はESXiを落としています。
そのため、VMを全てシャットダウンして、シャットダウンが完了したらESXiをシャットダウンするスクリプトと、
ESXiを起動したらtxtファイルに登録したVMを自動で起動するスクリプトを作成しています。
またESXiはpythonを標準搭載しているのでpythonistaには助かります。
(*) Wineでほとんどの機能を利用可。