Upgrade to Pro — share decks privately, control downloads, hide ads and more …

vCenterシミュレーターを使ってCIをやってみよう.pdf

sky_joker
September 18, 2019

 vCenterシミュレーターを使ってCIをやってみよう.pdf

sky_joker

September 18, 2019
Tweet

More Decks by sky_joker

Other Decks in Technology

Transcript

  1. www.goodpello.com --- - 自己紹介: 名前: sky_jokerxx 仕事: 自動化エンジニア 最近ハマってること: -

    Ansible開発 - Ansibleへのコントリビュート - Ansibleを使ったVMware基盤自動化 (ESXi、VM、NSXなど) - OpenShiftやk8s(コンテナ関連) 趣味: - 自宅ラックで検証 @sky_jokerxx
  2. www.goodpello.com CIは何故必要か? 品質向上や納期短縮、学習スピードアップやコミュニケーションロス削減な どを目的としてやります。 • 開発しているSDKのバージョンが変わった時の動作確認がしたい • 開発言語の複数バージョンで動作を確認したい • 事前に失敗・成功を確認したい

    • 高速にCIを繰り返しフィードバックを得て学習スピードを上げたい • 失敗・成功を可視化して運用・開発部隊で円滑なコミュニケーションをと れるようにしたい 心理的安全性の確保 例えば…
  3. 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 などなど
  4. www.goodpello.com サポートしてるSDK Goで出来ているSDK govmomi Pythonで出来ているSDK pyvmomi Rubyで出来ているSDK rvmomi 動作 備考

    項目 SDK VM情報の取得やクローンは出来たが新規作成やネットワーク情報など の取得ができない、色々できない(今後に期待) PowerCLI 残念ながら、PowerCLIはほぼダメだった…
  5. 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 へアクセスしてサポートされているメソッドやオブジェクトを 取得
  6. 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にクラスターを作成する ただし、マルチデーターセンターには対応していない模様
  7. 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
  8. 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
  9. 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" } }