Pro Yearly is on sale from $80 to $50! »

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

D65bdfdd4762c763f71d08fd4d9fa511?s=47 sky_joker
September 18, 2019

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

D65bdfdd4762c763f71d08fd4d9fa511?s=128

sky_joker

September 18, 2019
Tweet

Transcript

  1. www.goodpello.com vCenterシミュレーターを使っ てCIをやってみよう VMware DevOps Meetup #3

  2. www.goodpello.com 本資料は後からアップしてTwitterに流しま す!! 2

  3. www.goodpello.com 今日話す事 01. インフラCIの必要性や課題 05. まとめ 04. 動作デモ 03. vCenterシミュレーターの使い方

    02. vCenterシミュレーターの紹介
  4. www.goodpello.com --- - 自己紹介: 名前: sky_jokerxx 仕事: 自動化エンジニア 最近ハマってること: -

    Ansible開発 - Ansibleへのコントリビュート - Ansibleを使ったVMware基盤自動化 (ESXi、VM、NSXなど) - OpenShiftやk8s(コンテナ関連) 趣味: - 自宅ラックで検証 @sky_jokerxx
  5. www.goodpello.com みなさんインフラ自動化やっていますか? 5

  6. www.goodpello.com みなさんインフラCIやっていますか? 6

  7. www.goodpello.com CIは何故必要か? 品質向上や納期短縮、学習スピードアップやコミュニケーションロス削減な どを目的としてやります。 • 開発しているSDKのバージョンが変わった時の動作確認がしたい • 開発言語の複数バージョンで動作を確認したい • 事前に失敗・成功を確認したい

    • 高速にCIを繰り返しフィードバックを得て学習スピードを上げたい • 失敗・成功を可視化して運用・開発部隊で円滑なコミュニケーションをと れるようにしたい 心理的安全性の確保 例えば…
  8. www.goodpello.com VMwareインフラCIの課題 • 物理的なインフラを用意するのはなかなか困難 • VMwareの環境は結構リソースが必要 • 一時的なCI環境を作るにしてもプロビジョニングやデプロイが大変 • 気軽に作ったり消したりをする環境を作るのは難しい

    などなど VMwareインフラCIをやるのであれば、リソース消費が 少なくて、プロビジョニングが容易で気軽に作ったり消し たりできるものが欲しい!!
  9. 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は無いです
  10. 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 などなど
  11. www.goodpello.com サポートしてるSDK Goで出来ているSDK govmomi Pythonで出来ているSDK pyvmomi Rubyで出来ているSDK rvmomi 動作 備考

    項目 SDK VM情報の取得やクローンは出来たが新規作成やネットワーク情報など の取得ができない、色々できない(今後に期待) PowerCLI 残念ながら、PowerCLIはほぼダメだった…
  12. www.goodpello.com vcsimのコンテナ vcsimを簡単にCIで使えるようにしたコンテナがAnsibleプロジェクトに用意さ れています。 AnsibleのVMwareモジュール開発は、このコンテナを使ってインテグレー ションテストをしています。 今回はこれを元にしてみようと思います! https://github.com/ansible/vcenter-test-container

  13. 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 へアクセスしてサポートされているメソッドやオブジェクトを 取得
  14. 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にクラスターを作成する ただし、マルチデーターセンターには対応していない模様
  15. 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
  16. 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
  17. www.goodpello.com もっと簡単に使えるようにAnsibleのRoleを作成 Ansibleとdockerがあればすぐにvcsimをプロビジョニングできるロールを作っ てみました。 ansible_vmware_govcsim_provisioner https://github.com/sky-joker/ansible-vmware-govcsim-provisioner https://galaxy.ansible.com/sky_joker/ansible_vmware_govcsim_provisioner

  18. 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:pass@172.17.0.2: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" } }
  19. www.goodpello.com デモ • vcsimプロビジョニング • Travis CIを使ったテストの例 https://github.com/sky-joker/VMware-DevOps-Meetup-3-demo

  20. www.goodpello.com まとめ vcsimはgoで作成されているのでWindows/Linux/Macでも動作する ので気軽に試すことが出来ます vcsimで高速にPlaybookや自作ツールのCIテストを実行して、効率よく 改修したりDevとOpsで情報共有出来ることが期待されます vcsimは最小限のリソースで動作するのと、コンテナで作れば気軽に開 発やテスト環境の構築・削除が出来ます

  21. www.goodpello.com VMware界隈にもAnsibleを流行らせ隊

  22. www.goodpello.com Ansibleユーザー会(コミュニティ)の紹介 connpass https://ansible-users.connpass.com/ Slack https://bit.ly/ansiblejp-slack Ansibleユーザー会まとめページ https://ansiblejp.github.io/

  23. www.goodpello.com 初めてのAnsible! 引用元 @fideleruuth さん https://twitter.com/fideleruuth/status/1151038347835559936?s=20

  24. www.goodpello.com Thank you For listening https://twitter.com/sky_jokerxx https://qiita.com/sky_jokerxx https://sky-joker.tech https://github.com/sky-joker @sky_jokerxx