SlideShare ist ein Scribd-Unternehmen logo
1 von 10
pyvmomiと 
AnsibleのDynamic Inventory
自己紹介 
● 河野健太朗(@kawken) 
● シナジーマーケティング(株) 
● 仕事 
o WEBアプリ開発 
 SIのお仕事 
 Ruby on Rails を主に使ってる 
o 開発環境の改善 
 レガシーな環境をモダンにするような活動 
 社内の開発用サーバ管理
Dynamic Inventory とは? 
● インベントリファイルに、実行権限が付与 
されていると実行結果を使用する仕組み 
手順 
1. JSONを出力するスクリプトを作成& 実行 
権限を付与 
2. インベントリファイルとしてスクリプトを 
指定する 
ansible-playbook -i hosts.py site.yml
Dynamic Inventory のルール 
● スクリプトはpython以外でもOK 
● --list, --host のコマンドライン引数が渡って 
くる 
o デフォルトは--list 
o ホストが指定されているときは--host 
● スクリプト用の設定ファイルはiniファイル 
が推奨? 
● 実行時に設定したい値は環境変数で渡す以 
外なさそう 
https://github.com/ansible/ansible/tree/devel/plugins/inventory
pyvmomiとは? 
● VMware vSphere APIのPythonバインディン 
グ 
o VMware vSphere APIとは 
 VMware ESXなどで管理している仮想ホストを 
操作 
● VMware公式 
o https://github.com/vmware/pyvmomi 
● VMOMI 
o Virtualization Management Object 
Management Infrastructure 
● 読み方は…?
pyvmomiのサンプル 
https://github.com/vmware/pyvmomi/blob/master/sample/poweronvm.py# 
L116 
なぜか3スペースなのがつらい
使いどころ 
● 社内の開発用サーバの構築(VMware) 
1. pyvmomiで仮想マシン構築 
2. CentOSのkickstartで自動インストール 
3. Ansibleでプロビジョニング 
DHCPのためFQDNとIPがわからないので、 
pyvmomiでVMwareの管理名からIPを取得している 
TARGET_HOST="$vmname" ansible-playbook -i target.py site.yml
target.pyの実行結果 
$ TARGET_HOST=sample.local vmware/target.py 
{ 
"all": { 
"hosts": [ 
"192.168.0.123" 
], 
"vars": { 
"target_hostname": "sample.local" 
} 
} 
}
まとめ 
● Dynamic Inventory 
o 簡単なスクリプトから始められる 
o VMWareやAWS上に構築された、IPやEnd Pointが 
わからないようなサーバを特定して、プロビジョニ 
ングすることができる 
● pyvmomi 
o pyvmomiはVMwareの操作が簡単にできる 
o サンプルを見ると何となくわかるので、Pythonがわ 
かれば簡単
参考 
Ansible公式ドキュメント 
Dynamic Inventory の説明 
http://docs.ansible.com/intro_dynamic_inventory.html 
スクリプトの作り方 
http://docs.ansible.com/developing_inventory.html 
Dyanmic Inventory のサンプル 
https://github.com/ansible/ansible/tree/devel/plugins/inventory 
pyvmomi 
https://github.com/vmware/pyvmomi 
VMOMI 
https://github.com/vmware/pyvmomi/wiki/VMOMI 
VMware vSphere Web Services SDK Documentation 
https://www.vmware.com/support/developer/vc-sdk/

Weitere ähnliche Inhalte

Was ist angesagt?

Hatena's Infrastructure from the beginning
Hatena's Infrastructure from the beginningHatena's Infrastructure from the beginning
Hatena's Infrastructure from the beginning
Shinji Tanaka
 
Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきました
Masaru Kobashigawa
 
20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ
Yasuhiro Araki, Ph.D
 
サーバーサイドボトルネックの探し方
サーバーサイドボトルネックの探し方サーバーサイドボトルネックの探し方
サーバーサイドボトルネックの探し方
Yugo Shimizu
 
RDS(MySQL)の利用と注意点
RDS(MySQL)の利用と注意点RDS(MySQL)の利用と注意点
RDS(MySQL)の利用と注意点
Hiroyasu Suzuki
 
20140418 info talkセミナー資料
20140418 info talkセミナー資料20140418 info talkセミナー資料
20140418 info talkセミナー資料
Takahiro Iwase
 

Was ist angesagt? (19)

Hatena's Infrastructure from the beginning
Hatena's Infrastructure from the beginningHatena's Infrastructure from the beginning
Hatena's Infrastructure from the beginning
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
 
Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきました
 
CloudSearchによる全文検索 - CM:道 2014/08/01
CloudSearchによる全文検索 - CM:道 2014/08/01 CloudSearchによる全文検索 - CM:道 2014/08/01
CloudSearchによる全文検索 - CM:道 2014/08/01
 
20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ
 
ハンズのDynamoDBクラウドパターン
ハンズのDynamoDBクラウドパターンハンズのDynamoDBクラウドパターン
ハンズのDynamoDBクラウドパターン
 
mysqlftppc 紹介
mysqlftppc 紹介mysqlftppc 紹介
mysqlftppc 紹介
 
Shimane2008
Shimane2008Shimane2008
Shimane2008
 
Capistrano introduction
Capistrano introductionCapistrano introduction
Capistrano introduction
 
サーバーサイドボトルネックの探し方
サーバーサイドボトルネックの探し方サーバーサイドボトルネックの探し方
サーバーサイドボトルネックの探し方
 
RDS(MySQL)の利用と注意点
RDS(MySQL)の利用と注意点RDS(MySQL)の利用と注意点
RDS(MySQL)の利用と注意点
 
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
 
YCSB JSONB 対応版 を作ってMongoDB と 比較してみた
YCSB JSONB 対応版 を作ってMongoDB と 比較してみたYCSB JSONB 対応版 を作ってMongoDB と 比較してみた
YCSB JSONB 対応版 を作ってMongoDB と 比較してみた
 
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
 
Amazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用についてAmazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用について
 
Amazon ec2とは何か?
Amazon ec2とは何か?Amazon ec2とは何か?
Amazon ec2とは何か?
 
Tuning maniax 2014 Hadoop編
Tuning maniax 2014 Hadoop編Tuning maniax 2014 Hadoop編
Tuning maniax 2014 Hadoop編
 
20140418 info talkセミナー資料
20140418 info talkセミナー資料20140418 info talkセミナー資料
20140418 info talkセミナー資料
 
AngularFireで楽々バックエンド
AngularFireで楽々バックエンドAngularFireで楽々バックエンド
AngularFireで楽々バックエンド
 

Andere mochten auch

HttpとTelnetをつなぐ何か
HttpとTelnetをつなぐ何かHttpとTelnetをつなぐ何か
HttpとTelnetをつなぐ何か
ShigekiYamada
 

Andere mochten auch (15)

Ssmjp20131031
Ssmjp20131031Ssmjp20131031
Ssmjp20131031
 
ansible 社内お勉強会資料
ansible 社内お勉強会資料ansible 社内お勉強会資料
ansible 社内お勉強会資料
 
HttpとTelnetをつなぐ何か
HttpとTelnetをつなぐ何かHttpとTelnetをつなぐ何か
HttpとTelnetをつなぐ何か
 
WebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリWebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリ
 
できる!KickstartとAnsible!
できる!KickstartとAnsible!できる!KickstartとAnsible!
できる!KickstartとAnsible!
 
Barracuda Email Security Gateway(旧 Barracuda Spam Firewall PLUS) 製品のご紹介
Barracuda Email Security Gateway(旧 Barracuda Spam Firewall PLUS) 製品のご紹介Barracuda Email Security Gateway(旧 Barracuda Spam Firewall PLUS) 製品のご紹介
Barracuda Email Security Gateway(旧 Barracuda Spam Firewall PLUS) 製品のご紹介
 
Introduction to vSphere APIs Using pyVmomi
Introduction to vSphere APIs Using pyVmomiIntroduction to vSphere APIs Using pyVmomi
Introduction to vSphere APIs Using pyVmomi
 
AnsibleによるHWプロビジョニング -OneViewの連携-
AnsibleによるHWプロビジョニング  -OneViewの連携-AnsibleによるHWプロビジョニング  -OneViewの連携-
AnsibleによるHWプロビジョニング -OneViewの連携-
 
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
Ansible勉強会資料
Ansible勉強会資料Ansible勉強会資料
Ansible勉強会資料
 
Ansibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStackAnsibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStack
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
運用のためのPlaybook (Playbook for Operation)
運用のためのPlaybook (Playbook for Operation)運用のためのPlaybook (Playbook for Operation)
運用のためのPlaybook (Playbook for Operation)
 

Ähnlich wie Pyvmomiとansibleのdynamic inventory

実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
Hiroyasu Suzuki
 
What is java_se_7
What is java_se_7What is java_se_7
What is java_se_7
TakumiIINO
 
OpenStack Summit in Atlanta 参加報告
OpenStack Summit in Atlanta 参加報告OpenStack Summit in Atlanta 参加報告
OpenStack Summit in Atlanta 参加報告
Akira Yoshiyama
 
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
irix_jp
 

Ähnlich wie Pyvmomiとansibleのdynamic inventory (20)

ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
 
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃうフレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
 
Ansible provisioning
Ansible provisioningAnsible provisioning
Ansible provisioning
 
Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
 
Common Lisp でビッグデータを作ろう
Common Lisp でビッグデータを作ろうCommon Lisp でビッグデータを作ろう
Common Lisp でビッグデータを作ろう
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
 
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdiJenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi
 
恋するJenkins
恋するJenkins恋するJenkins
恋するJenkins
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポートJAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
 
What is java_se_7
What is java_se_7What is java_se_7
What is java_se_7
 
OpenStack Summit in Atlanta 参加報告
OpenStack Summit in Atlanta 参加報告OpenStack Summit in Atlanta 参加報告
OpenStack Summit in Atlanta 参加報告
 
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
 
Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
 

Pyvmomiとansibleのdynamic inventory

  • 2. 自己紹介 ● 河野健太朗(@kawken) ● シナジーマーケティング(株) ● 仕事 o WEBアプリ開発  SIのお仕事  Ruby on Rails を主に使ってる o 開発環境の改善  レガシーな環境をモダンにするような活動  社内の開発用サーバ管理
  • 3. Dynamic Inventory とは? ● インベントリファイルに、実行権限が付与 されていると実行結果を使用する仕組み 手順 1. JSONを出力するスクリプトを作成& 実行 権限を付与 2. インベントリファイルとしてスクリプトを 指定する ansible-playbook -i hosts.py site.yml
  • 4. Dynamic Inventory のルール ● スクリプトはpython以外でもOK ● --list, --host のコマンドライン引数が渡って くる o デフォルトは--list o ホストが指定されているときは--host ● スクリプト用の設定ファイルはiniファイル が推奨? ● 実行時に設定したい値は環境変数で渡す以 外なさそう https://github.com/ansible/ansible/tree/devel/plugins/inventory
  • 5. pyvmomiとは? ● VMware vSphere APIのPythonバインディン グ o VMware vSphere APIとは  VMware ESXなどで管理している仮想ホストを 操作 ● VMware公式 o https://github.com/vmware/pyvmomi ● VMOMI o Virtualization Management Object Management Infrastructure ● 読み方は…?
  • 7. 使いどころ ● 社内の開発用サーバの構築(VMware) 1. pyvmomiで仮想マシン構築 2. CentOSのkickstartで自動インストール 3. Ansibleでプロビジョニング DHCPのためFQDNとIPがわからないので、 pyvmomiでVMwareの管理名からIPを取得している TARGET_HOST="$vmname" ansible-playbook -i target.py site.yml
  • 8. target.pyの実行結果 $ TARGET_HOST=sample.local vmware/target.py { "all": { "hosts": [ "192.168.0.123" ], "vars": { "target_hostname": "sample.local" } } }
  • 9. まとめ ● Dynamic Inventory o 簡単なスクリプトから始められる o VMWareやAWS上に構築された、IPやEnd Pointが わからないようなサーバを特定して、プロビジョニ ングすることができる ● pyvmomi o pyvmomiはVMwareの操作が簡単にできる o サンプルを見ると何となくわかるので、Pythonがわ かれば簡単
  • 10. 参考 Ansible公式ドキュメント Dynamic Inventory の説明 http://docs.ansible.com/intro_dynamic_inventory.html スクリプトの作り方 http://docs.ansible.com/developing_inventory.html Dyanmic Inventory のサンプル https://github.com/ansible/ansible/tree/devel/plugins/inventory pyvmomi https://github.com/vmware/pyvmomi VMOMI https://github.com/vmware/pyvmomi/wiki/VMOMI VMware vSphere Web Services SDK Documentation https://www.vmware.com/support/developer/vc-sdk/