Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
pyvmomiで始めるvSphere_API生活_初級編_.pdf
Search
sky_joker
July 05, 2019
Technology
4.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
pyvmomiで始めるvSphere_API生活_初級編_.pdf
sky_joker
July 05, 2019
More Decks by sky_joker
See All by sky_joker
NetboxとAnsibleを使ってvSphere環境の管理・作業の自動化をしてみよう
sky_joker
0
2k
Ansible Collections概要
sky_joker
1
1.3k
Molecule VMware Driverの紹介
sky_joker
0
1.5k
VMwareとAnsible_Towerで実現する自動化2.0の世界
sky_joker
4
1.3k
Ansible VMwareモジュールの今までとこれから
sky_joker
3
2.9k
Ansible TowerでCICDの検証をしてみた話
sky_joker
9
2.6k
vCenterシミュレーターを使ってCIをやってみよう.pdf
sky_joker
6
3k
NSXのAnsibleモジュールについて調べてみた
sky_joker
2
770
VMwareで作ったIaaSにAnsible Towerを導入した話
sky_joker
4
2.1k
Other Decks in Technology
See All in Technology
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
920
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
110
ガバメントクラウドでのランサムウェア対策
techniczna
1
530
AI ネイティブな組織に Gemini Enterprise Agent Platform がなぜ必要なのか
asei
1
140
AIがコードを書く時代、人間は何を保証するのか———馬場さんと考える、開発者に求められる新しい責任と価値 - TECH PLAY
netmarkjp
0
1.1k
VPCセキュリティ対応の最新事情
nagisa53
2
350
PLaMo 3.0 Primeの事後学習
pfn
PRO
0
240
組織にどうSREを根付かせるか?〜IVRyの場合〜
abnoumaru
0
240
StepFunctionsとGraphRAGを活用した暗黙知活用のためのRAG基盤
yakumo
0
200
QAと開発の両側から進める AI活用 -QAプロセスAI支援ツールキットと Inner Loop / Outer Loopの取り組み-
legalontechnologies
PRO
2
400
Claude Code並行開発環境の ムダ‧ムラ‧ムリを見直した話
muranakaaa
2
390
Escolhendo LLMs na Prática: Lições Reais em Busca Agêntica no Mercado Livre —TDC 2026 Floripa
jpbonson
0
120
Featured
See All Featured
The untapped power of vector embeddings
frankvandijk
2
1.8k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
620
Navigating Weather and Climate Data
rabernat
0
430
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
780
Music & Morning Musume
bryan
47
7.3k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
370
Site-Speed That Sticks
csswizardry
13
1.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Paper Plane (Part 1)
katiecoart
PRO
1
10k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Prompt Engineering for Job Search
mfonobong
0
390
Transcript
pyvmomiで始める vSphere API生活 (初級編) @sky_jokerxx
今日話すこと • vSphere APIをこれから触ろうとしている人、触り 始めた人向けの内容 • pyVmomiやManaged Objectの簡単な説明 • オブジェクト構造のツラミ
• 便利かもしれないツール(自作) 1
pyvmomiとは 2 pyVmomiは、VMware vSphere API用のPython SDKです。 このSDKを使用することで、ESXiやvCenterをプログラミングで管理・操作す ることができます。 pyVmomiは過去4つのバージョンの下位互換をサポートしています。 https://github.com/vmware/pyvmomi
pyvmomi(GitHub) https://code.vmware.com/apis/358/vsphere vSphere API Reference
pyvmomiインストール方法(簡単) 3 Pyvmomiインストール(venv) [pyvmomi@localhost ~]$ virtualenv venv # python2の場合 [pyvmomi@localhost
~]$ python3 -m venv venv # python3の場合 [pyvmomi@localhost ~]$ source venv/bin/activate (venv) [pyvmomi@localhost ~]$ pip install pyvmomi # 最新版を新ストールする場合 (venv) [pyvmomi@localhost ~]$ pip install pyvmomi==6.7.0.2018.9 # バージョンを指定する場合 pyVmomiのインストールはpip一撃なので簡単! Perl SDKを使っていた時はcpanで多くのモジュールをインストールしたり、libwww-pe rlのバージョン依存で苦しんでいた…
pyvmomiの使い方例 4 #!/usr/bin/env python # -*- coding: utf-8 -*- from
pyVim.connect import SmartConnectNoSSL, Disconnect from pyVmomi import vim import ssl import atexit if __name__ == "__main__": # ServiceInstanceを取得 si = SmartConnectNoSSL(host="vCenter or ESXi IP or HostName", user="login user name", pwd="login password") # 処理完了時にvCenterから切断 atexit.register(Disconnect, si) # ServiceContent(Data Object)を取得 content = si.content # VMオブジェクトのリストを取得 vm_objects = content.viewManager.CreateContainerView( content.rootFolder, [vim.VirtualMachine], True) # VM名を指定してオブジェクトを選択 target_vm = "" for vm_obj in vm_objects.view: if vm_obj.name == "example": target_vm = vm_obj # target_vmにVMオブジェクトを格納 break # target_vmが存在した場合、VM名を表示 if target_vm: print target_vm.name VMのオブジェクト取得例
Managed Objectの簡易概念図(イメージ) 6 Objectの概念図 (1) Managed Object データセンタ、ESXiホスト、仮想マシン、仮想スイッチなどの設定情報 やプロパティ、メソッドがまとまったもの。 基本、VMwareをプログラムなどから操作する場合は、Managed
Obj ectの概念を理解しておく必要がある。 Managed Objectを元にして設定変更やメソッドの実行(例えば、VM のPowerOn/Offなど)をする。 (2) Data Object Managed Objectに関連する設定情報がまとまったデータ。 Data ObjectはManaged Object内に複数存在する。 例えば、NW設定情報やリソース設定情報は別々のData Objectで管 理している。 (3) Property オブジェクト内にある設定項目のようなイメージ。 オブジェクトのプロパティを指定することで、そのプロパティの実際の 値が取得できる。 (4) Method 言葉通り、方法や手法の関数というイメージ。 例えば、仮想マシンのManaged Objectにあるシャットダウンメソッド を実行すると仮想マシンは停止する。 Property Data Object 設定値 仮想マシンのManaged Object name example config vim.vm.VirtualHardware hardeware numCPU 2 MemoryMB 2048 MOBの中は階層化 されている Method MigrateVM_Task, MountToolsInstaller, PowerOffVM_Task, PowerOnVM_Task … など
Objectの操作例 6 VMをシャットダウンする # target_vmをシャットダウンするメソッドを実行 if target_vm: target_vm.ShutdownGuest() VMのCPU数を変更する #
VM設定のデータオブジェクトを生成(CPUコアを2つにする) vm_config = vim.vm.ConfigSpec() vm_config.numCPUs = 2 # target_vmの設定変更を実行 If target_vm: target_vm.ReconfigVM_Task(vm_config) スナップショットを取得する # target_vmのスナップショットを作成 if target_vm: target_vm.CreateSnapshot_Task(name="snapshot01", memory=False, quiesce=False)
Managed Objectのつらみ 7 • (監視系を作っていた時)VMが数千台とかになってくると処理速度がやばたにえ ん • govmomi使って対処した • オブジェクトの中身が複雑すぎてやばたにえん
• Managed Object Browserでオブジェクトの中身を確認しようとするとクリック数が やばたにえん • オブジェクトの中身を一覧表示するツールを作った(次へ続く)
Managed Objectの中身一覧を表示するツール紹介 8 mob-peoperty-view Managed ObjectのPropertyやData Objectの一覧を再帰的に表示してくれるツール Python2/3で動作します https://github.com/sky-joker/mob-property-view mob-property-viewインストール
(venv) [pyvmomi@localhost ~]$ git clone https://github.com/sky-joker/mob-property-view.git (venv) [pyvmomi@localhost ~]$ cd mob-property-view/ (venv) [pyvmomi@localhost ~]$ pip install -r requirements.txt (venv) [pyvmomi@localhost mob-property-view]$ chmod +x mob-property-view.py
mob-property-viewの使い方 9 example VMのオブジェクト一覧を表示 (venv) [pyvmomi@localhost ~]$ ./mob-property-view.py -vc 192.168.0.111
--mob VirtualMachine -t example Password: ----------- | example | ----------- ------------------ | availableField | ------------------ (vim.CustomFieldsManager.FieldDef) [] (snip) example VMのオブジェクトのnameプロパティを表示 (venv) [pyvmomi@localhost ~]$ ./mob-property-view.py -vc 192.168.0.111 --mob VirtualMachine -t example --property name Password: ----------- | example | ----------- -------- | name | -------- example
まとめ オブジェクトの慣れが必要 vSphere APIのオブジェクトは複雑なため慣れが必要 自動化できる! コードでインフラが制御できるようになれば自動化 することが出来る! Ansibleモジュールが作れる! AnsibleのモジュールはpyVmomiベースで作られてい るのでオリジナルを作ったり、コミュニティにコン
トリビュートすることができる! 10
https://twitter.com/sky_jokerxx https://qiita.com/sky_jokerxx https://sky-joker.tech https://github.com/sky-joker @sky_jokerxx Thank you For listening 11