Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

www.goodpello.com --- - 自己紹介: 名前: sky_jokerxx 仕事: 自動化エンジニア 最近ハマってること: - Ansible開発 - Ansibleへのコントリビュート - Ansibleを使ったVMware基盤自動化 (ESXi、VM、NSXなど) - OpenShiftやk8s(コンテナ関連) 趣味: - 自宅ラックで検証 @sky_jokerxx

Slide 5

Slide 5 text

www.goodpello.com みなさんインフラ自動化やっていますか? 5

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

www.goodpello.com CIは何故必要か? 品質向上や納期短縮、学習スピードアップやコミュニケーションロス削減な どを目的としてやります。 • 開発しているSDKのバージョンが変わった時の動作確認がしたい • 開発言語の複数バージョンで動作を確認したい • 事前に失敗・成功を確認したい • 高速にCIを繰り返しフィードバックを得て学習スピードを上げたい • 失敗・成功を可視化して運用・開発部隊で円滑なコミュニケーションをと れるようにしたい 心理的安全性の確保 例えば…

Slide 8

Slide 8 text

www.goodpello.com VMwareインフラCIの課題 • 物理的なインフラを用意するのはなかなか困難 • VMwareの環境は結構リソースが必要 • 一時的なCI環境を作るにしてもプロビジョニングやデプロイが大変 • 気軽に作ったり消したりをする環境を作るのは難しい などなど VMwareインフラCIをやるのであれば、リソース消費が 少なくて、プロビジョニングが容易で気軽に作ったり消し たりできるものが欲しい!!

Slide 9

Slide 9 text

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は無いです

Slide 10

Slide 10 text

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 などなど

Slide 11

Slide 11 text

www.goodpello.com サポートしてるSDK Goで出来ているSDK govmomi Pythonで出来ているSDK pyvmomi Rubyで出来ているSDK rvmomi 動作 備考 項目 SDK VM情報の取得やクローンは出来たが新規作成やネットワーク情報など の取得ができない、色々できない(今後に期待) PowerCLI 残念ながら、PowerCLIはほぼダメだった…

Slide 12

Slide 12 text

www.goodpello.com vcsimのコンテナ vcsimを簡単にCIで使えるようにしたコンテナがAnsibleプロジェクトに用意さ れています。 AnsibleのVMwareモジュール開発は、このコンテナを使ってインテグレー ションテストをしています。 今回はこれを元にしてみようと思います! https://github.com/ansible/vcenter-test-container

Slide 13

Slide 13 text

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 へアクセスしてサポートされているメソッドやオブジェクトを 取得

Slide 14

Slide 14 text

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にクラスターを作成する ただし、マルチデーターセンターには対応していない模様

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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" } }

Slide 19

Slide 19 text

www.goodpello.com デモ • vcsimプロビジョニング • Travis CIを使ったテストの例 https://github.com/sky-joker/VMware-DevOps-Meetup-3-demo

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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