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
2.9k
NSXのAnsibleモジュールについて調べてみた
sky_joker
2
750
VMwareで作ったIaaSにAnsible Towerを導入した話
sky_joker
4
2.1k
Other Decks in Technology
See All in Technology
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
250
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
200
Terraform 101 (初心者向け) 資料
shuadachi
0
160
Hatena Engineer Seminar 37 jj1uzh
jj1uzh
0
410
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
0
170
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
190
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
340
そのタスクオンスケですか?
poropinai1966
0
110
Docker Desktop不要の時代が来る? WSL標準の「wslc」で Linuxコンテナを動かしてみた.
ueponx
0
560
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
1
690
スタートアップにおけるアジャイルの実践について #shibuyagile
murabayashi
3
2k
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
170
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
450
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
GraphQLとの向き合い方2022年版
quramy
50
15k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
210
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
370
Leo the Paperboy
mayatellez
7
1.9k
Producing Creativity
orderedlist
PRO
348
40k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
340
30 Presentation Tips
portentint
PRO
1
340
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