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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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.8k
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
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
160
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
300
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
130
アンオフィシャルな、オフィシャルからのお願い
wyamazak_devrel
0
100
ルールやカスタム機能、どう活かす?ハンズオンで体感するIBM Bobの出力コントロール
muehara
1
150
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
190
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
7
1.9k
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
140
RSA暗号を手計算したくなること、ありますよね?? (20260615_orestudy6_rsa)
thousanda
0
380
気づかぬうちにセキュリティ負債を生むAPIキー運用
sgwrmctk
0
120
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
590
MCP Appsを作ってみよう
iwamot
PRO
4
610
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
340
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
How to Talk to Developers About Accessibility
jct
2
230
Optimizing for Happiness
mojombo
378
71k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Faster Mobile Websites
deanohume
310
31k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Deep Space Network (abreviated)
tonyrice
0
170
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
570
Statistics for Hackers
jakevdp
799
230k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Code Review Best Practice
trishagee
74
20k
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