Share
Embed
Transcript
24 slides
-
www.goodpello.com 今日話す事 01. インフラCIの必要性や課題 05. まとめ 04. 動作デモ 03. vCenterシミュレーターの使い方
02. vCenterシミュレーターの紹介 -
www.goodpello.com --- - 自己紹介: 名前: sky_jokerxx 仕事: 自動化エンジニア 最近ハマってること: -
Ansible開発 - Ansibleへのコントリビュート - Ansibleを使ったVMware基盤自動化 (ESXi、VM、NSXなど) - OpenShiftやk8s(コンテナ関連) 趣味: - 自宅ラックで検証 @sky_jokerxx -
www.goodpello.com CIは何故必要か? 品質向上や納期短縮、学習スピードアップやコミュニケーションロス削減な どを目的としてやります。 • 開発しているSDKのバージョンが変わった時の動作確認がしたい • 開発言語の複数バージョンで動作を確認したい • 事前に失敗・成功を確認したい
• 高速にCIを繰り返しフィードバックを得て学習スピードを上げたい • 失敗・成功を可視化して運用・開発部隊で円滑なコミュニケーションをと れるようにしたい 心理的安全性の確保 例えば… -
www.goodpello.com VMwareインフラCIの課題 • 物理的なインフラを用意するのはなかなか困難 • VMwareの環境は結構リソースが必要 • 一時的なCI環境を作るにしてもプロビジョニングやデプロイが大変 • 気軽に作ったり消したりをする環境を作るのは難しい
などなど VMwareインフラCIをやるのであれば、リソース消費が 少なくて、プロビジョニングが容易で気軽に作ったり消し たりできるものが欲しい!! -
www.goodpello.com そこで、vCenterシミュレーターですよ! vCenterシミュレーター(vcsim)とは? vSphere WebサービスSDK(SOAP API)のエンドポイントが実装されているツー ルです。 Go言語で開発されておりLinux/Windows/Macで動作します。 vCenter経由で設定できるもの(DC,VM,Cluster,Datastore,Network)は大体で きると思います。
https://github.com/vmware/govmomi/tree/master/vcsim *SOAPのシミュレーターなのでGUIは無いです -
www.goodpello.com vcsimでサポートされているメソッド(一部) • AcquireCloneTicket • AcquireGenericServiceTicket • AddAuthorizationRole • AddCustomFieldDef
• AddDVPortgroup_Task • AddLicense • AddPortGroup • AddStandaloneHost_Task • AddVirtualSwitch • AllocateIpv4Address • AllocateIpv6Address • CancelWaitForUpdates • CloneSession • CloneVM_Task • CopyDatastoreFile_Task • CopyVirtualDisk_Task • CreateClusterEx • CreateCollectorForEvents • CreateContainerView • CreateDVS_Task • CreateDatacenter • CreateFilter • CreateFolder • CreateIpPool • CreateLocalDatastore • CreateNasDatastore • CreatePropertyCollector • CreateResourcePool • CreateSnapshot_Task • CreateStoragePod • CreateVApp • CreateVM_Task • CreateVirtualDisk_Task • CurrentTime • DeleteDatastoreFile_Task • DeleteVirtualDisk_Task • DestroyIpPool • DestroyPropertyCollector • Destroy_Task • DisableRuleset • EnableRuleset • EnterMaintenanceMode_Task • ExitMaintenanceMode_Task • FetchDVPorts • FindByDatastorePath • FindByInventoryPath • FindByUuid • FindChild • Login • LoginByToken • LoginExtensionByCertificate • Logout • MakeDirectory • MarkAsTemplate • MoveDatastoreFile_Task • MoveIntoFolder_Task • MoveVirtualDisk_Task • PostEvent • PowerOffVM_Task • PowerOnMultiVM_Task • PowerOnVM_Task • QueryAssignedLicenses • QueryEvents • QueryIPAllocations • QueryIpPools • QueryOptions • QueryVirtualDiskUuid • ReconfigVM_Task • ReconfigureDVPortgroup_Task • ReconfigureDvs_Task • RefreshDatastore • RegisterVM_Task • ReleaseIpAllocation • RelocateVM_Task • RemoveAllSnapshots_Task • RemoveAuthorizationRole • RemoveCustomFieldDef • RemoveEntityPermission • RemoveLicense • RemovePortGroup • RemoveVirtualSwitch • RenameCustomFieldDef • Rename_Task • RetrieveAllPermissions • RetrieveEntityPermissions • RetrieveProperties • RetrievePropertiesEx • RetrieveRolePermissions • RetrieveServiceContent • RetrieveUserGroups などなど -
www.goodpello.com サポートしてるSDK Goで出来ているSDK govmomi Pythonで出来ているSDK pyvmomi Rubyで出来ているSDK rvmomi 動作 備考
項目 SDK VM情報の取得やクローンは出来たが新規作成やネットワーク情報など の取得ができない、色々できない(今後に期待) PowerCLI 残念ながら、PowerCLIはほぼダメだった… -
www.goodpello.com vcsimコンテナのアーキテクチャ vcsim(Go) Flask(Python) http://ip:5000/spawn へアクセスして起動 vcsimを起動 http://ip:5000/kill/all へアクセスして停止 vcsimを停止
vcsimが起動したら https://ip/sdk へアクセスして操作 JSONで起動情報(user/passなど)を返す https://ip/about へアクセスしてサポートされているメソッドやオブジェクトを 取得 -
www.goodpello.com vsimコンテナのURL操作説明(Flask) URL 説明 / 「vcsim simulator」の文字を返す Flaskの起動確認などでアクセスする /log vcsimのログが表示される
/kill/int:number vcsimが複数起動為ている場合はプロセス番号を指定して停止させる /kill/all 起動している全てのvcsimを停止させる /spawn vcsimを起動させる いくつかのオプション指定可能 /govc_find vcsimからManaged Objectを検索する(フィルターも可能) /govc_vm_info vcsimからVMの情報を取得する /govc_host_info vcsimからESXiの情報を取得する /create_cluster vcsimにクラスターを作成する ただし、マルチデーターセンターには対応していない模様 -
www.goodpello.com spawnの使い方 パラメーター 説明 app VirtualAppの数を指定 cluster クラスターの数を指定 dc データセンターの数を指定
ds データストアの数を指定 folder フォルダーの数を指定 host クラスターのホスト数を指定 pg ポートグループの数を指定 pod データセンターごとのストレージポッド数を指定 pool リソースプールの数を指定 vm VMの数を指定 spawnには以下のパラメーターが指定可能です。 データセンターとクラスターを2つ作成する例 http://ip:5000/spawn?dc=2&cluster=2 -
www.goodpello.com govc_findの使い方 パラメーター 説明 VA VirtualApp CCR ClusterComputerResource DC Datacenter
F Folder DVP DistributedVirtualPortgroup H Hostsystem VM VirtualMachine N Network ON OpaqueNetwork govc_findは以下のパラメーターでフィルタリンスすることが可能です。 パラメーター 説明 RP ResourcePool CR ComputeResource D Datastore DVS DistributedVirtualSwitch VMのリストを取得する例 http://ip:5000/govc_find?filter=VM -
www.goodpello.com Roleの使い方例(Ansibleとdockerインストール済み) # ansible-galaxy install sky_joker.ansible_vmware_govcsim_provisioner -p roles # pip
install -r roles/sky_joker.ansible_vmware_govcsim_provisioner/requirements.txt # vi main.yml --- - name: vcsim provisioning playbook hosts: localhost gather_facts: no roles: - sky_joker.ansible_vmware_govcsim_provisioner # ansible-playbook main.yml (snip) TASK [sky_joker.ansible_vmware_govcsim_provisioner : debug] ******************************************************************************* ok: [localhost] => { "starte_up_govcsim_result.json": { "GOVC_URL": "https://user:[email protected]:443", "cmd": "/go/bin/vcsim -httptest.serve 172.17.0.2:443 -app=0 -cluster=0 -dc=1 -ds=1 -folder=1 -host=3 - pg=1 -pod=1 -pool=1 -vm=2 > vcsim.log 2>&1", "host": "172.17.0.2", "password": "pass", "pid": 6, "port": 443, "username": "user" } }