Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
pyvmomiで始めるvSphere_API生活_初級編_.pdf
Search
sky_joker
July 05, 2019
Technology
4.9k
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
2.1k
Ansible Collections概要
sky_joker
1
1.3k
Molecule VMware Driverの紹介
sky_joker
0
1.6k
VMwareとAnsible_Towerで実現する自動化2.0の世界
sky_joker
4
1.4k
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
790
VMwareで作ったIaaSにAnsible Towerを導入した話
sky_joker
4
2.1k
Other Decks in Technology
See All in Technology
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
140
How to Design Configuration for Rails Applications
willnet
1
720
今さら理解するウェブフォントver.2026
takanorip
3
720
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
160
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
120
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
7
6k
しろおびから始める!ログ活用の第一歩
shumei_ito
0
940
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
160
その Valkey 使いこなしていますか?
onk
PRO
5
1.4k
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
430
Rust で関数型ドメインモデリング
takonda
0
130
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
140
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
490
Designing for humans not robots
tammielis
254
26k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
500
Code Reviewing Like a Champion
maltzj
529
40k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
600
First, design no harm
axbom
PRO
2
1.3k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
820
Navigating Weather and Climate Data
rabernat
0
550
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
From π to Pie charts
rasagy
1
400
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