SlideShare una empresa de Scribd logo
1 de 14
Puppet×Docker 夢の競演(?)
菅原 亮
第6回 Puppetユーザ会 発表資料
今回はPuppet Enterpriseが主役
Puppet Enterpriseって、
GUI便利だし10ノードまで無償だから、
もうちょっと使ってみようよという意味もあって、
今回はPuppet Enterpriseを全面に出します。
Dockerってなに?
・・・ここにいらっしゃるような皆さまには説明要らないですよね?
言わずと知れた代表的なコンテナアプリケーションのデプロイ自動化ソフトウェアです。
dockerコマンドを使っていろいろコマンドラインでコンテナを操作できます。
でもコマンドラインオプションが多過ぎていつも忘れてしまいます(僕だけ?)
・・・覚えてられません(汗
Puppetはそんな忘れっぽいアナタの強い味方です!
docker run -it --rm --privileged=true --add-host puppet:192.168.182.3 --add-host
vpe:192.168.182.3 -v /sys/fs/cgroup:/sys/fs/cgroup:ro sugaharar/centos7-systemd
コンテナをちょっど強引に例えるなら、
1つのマシン上に特定アプリ専用の
ちっさなVMみたいなものが
いっぱい載るイメージです。
コンテナを起動する(コマンドライン編)
Docker EnterpriseのWebコンソールを確認してから
さっきのコマンドを実行してみましょう。
実行後、もう一度Docker EnterpriseのWebコンソールを確認してみましょう。
docker run -it --rm --privileged=true --add-host puppet:192.168.182.3 --add-host
vpe:192.168.182.3 -v /sys/fs/cgroup:/sys/fs/cgroup:ro sugaharar/centos7-systemd
PuppetとDocker
garethr/dockerモジュール
https://forge.puppet.com/garethr/docker
dockerコマンドでできる事はほぼマニフェストとして記述できます!
Puppet ForgeでAPPROVEDになっています
これがベースとなっていると思わしきPuppet社公式モジュールも新たに出ています。
puppetlabs/docker_platformモジュール
https://forge.puppet.com/puppetlabs/docker_platform
今回はgarethr/dockerモジュールを使ってdockerをいろいろ弄ってみます!
コンテナを起動する(Puppet編)
Docker EnterpriseのWebコンソールを確認してから以下のマニフェストを実行します。
docker::run { 'sugaharar':
ensure => present,
image => 'sugaharar/centos7-systemd',
privileged => true,
tty => true,
hostname => 'sugaharar',
ports => ['22',],
}
削除はコチラ
docker::run { 'sugaharar':
ensure => absent,
image => 'sugaharar/centos7-systemd',
}
Puppet EnterpriseのGUIから制御する
このように単にモジュールを呼び出すだけなら簡単ですけど、
それでは芸が無い(?)のでちょっとだけ便利にします。
1. 1回の呼び出しで複数のコンテナを起動/停止できる
2. コンテナ起動と同時にPuppetエージェント自動インストール&自動登録
3. コンテナ停止と同時にPuppetエージェントの登録解除
ハッシュを受け取るクラスを作って、イテレータでループさせます。
イテレータはPuppet v4系から使えるようになりました!
class wrap_docker (
Hash $lst_container,
){
$lst_container.each |$container_name| {
docker::run { $container_name[0]:
ensure => $container_name[1],
image => 'sugaharar/centos7-systemd',
privileged => true,
tty => true,
hostname => $container_name[0],
hostentries => [ 'vpe:192.168.2.2', ],
ports => ['22',],
}
}
}
マニフェストを作る(その1)
コンテナ起動の時はPuppetエージェントインストールします。
docker::execクラスを使うと起動したコンテナで任意のコマンドを実行できます。
if $container_name[1] == 'present' {
docker::exec { "puppet_agent_install_${container_name[0]}":
detach => false,
container => $container_name[0],
command => '/bin/sh -c '/usr/bin/curl -k https://vpe:8140/packages/current/install.bash | /bin/bash -s'',
tty => true,
unless => '/bin/test -d /etc/puppetlabs',
require => Docker::Run[$container_name[0]],
}
}
マニフェストを作る(その2)
コンテナ停止の時はsshを使って直接ノードをpurgeしてしまいます。
elsif $container_name[1] == 'absent' {
exec { "purge_container_node_${container_name[0]}":
command => "/usr/bin/ssh vpe 'puppet node purge ${container_name[0]}'",
onlyif => "/usr/bin/ssh vpe 'puppet cert list ${container_name[0]}'",
}
}
マニフェストを作る(その3)
class wrap_docker ( Hash $lst_container, ){
$lst_container.each |$container_name| {
docker::run { $container_name[0]:
ensure => $container_name[1],
image => 'sugaharar/centos7-systemd',
privileged => true,
tty => true,
hostname => $container_name[0],
hostentries => [ 'vpe:192.168.2.2', ],
ports => ['22',],
}
if $container_name[1] == 'present' {
docker::exec { "puppet_agent_install_${container_name[0]}":
detach => false,
container => $container_name[0],
command => '/bin/sh -c '/usr/bin/curl -k https://vpe:8140/packages/current/install.bash | /bin/bash -s'',
tty => true,
unless => '/bin/test -d /etc/puppetlabs',
require => Docker::Run[$container_name[0]],
}
}
elsif $container_name[1] == 'absent' {
exec { "purge_container_node_${container_name[0]}":
command => "/usr/bin/ssh vpe 'puppet node purge ${container_name[0]}'",
onlyif => "/usr/bin/ssh vpe 'puppet cert list ${container_name[0]}'",
}
}
}
}
完成したマニフェスト
使ってみよう!
Puppet Enterpriseから実際にコンテナの起動と停止をしてみましょう!
コンテナ起動:
{"www01": "present", "www02": "present"}
コンテナ停止:
{"www01": "absent", "www02": "absent"}
まとめ
・Puppet ForgeのDockerモジュールでDockerを簡単制御
・Puppet EnterpriseのGUIとDockerの組み合わせは便利
・いろいろ応用しよう!
ご清聴ありがとうございました

Más contenido relacionado

La actualidad más candente

Skype4 pyで遊んでみた
Skype4 pyで遊んでみたSkype4 pyで遊んでみた
Skype4 pyで遊んでみたDaijirou Yamada
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Daisuke Kikuchi
 
第2回勉強会資料 柏木
第2回勉強会資料 柏木第2回勉強会資料 柏木
第2回勉強会資料 柏木beyond0iwamoto
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようKenji NAKAGAKI
 
vscode pipenv docker
vscode pipenv dockervscode pipenv docker
vscode pipenv dockerikdysfm
 
『こなへん』ができるまで ☆リリース直前編☆
『こなへん』ができるまで ☆リリース直前編☆『こなへん』ができるまで ☆リリース直前編☆
『こなへん』ができるまで ☆リリース直前編☆5mingame2
 
3 Dプリンタでロボットを作ろう_プレンプロジェクト
3 Dプリンタでロボットを作ろう_プレンプロジェクト3 Dプリンタでロボットを作ろう_プレンプロジェクト
3 Dプリンタでロボットを作ろう_プレンプロジェクトNatsuo Akazawa
 
SPAJAMでやったこと
SPAJAMでやったことSPAJAMでやったこと
SPAJAMでやったことHiroto Imoto
 
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話Keisuke Utsumi
 
JumperT16でDonkeyCarを操作する。
JumperT16でDonkeyCarを操作する。JumperT16でDonkeyCarを操作する。
JumperT16でDonkeyCarを操作する。Masanori Miyamoto
 
About kitakat
About kitakatAbout kitakat
About kitakathidenorly
 
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツールaoshiman
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみたShohei Tai
 
軽量言語(Lua, mruby)でGR-KURUMIを操作
軽量言語(Lua, mruby)でGR-KURUMIを操作軽量言語(Lua, mruby)でGR-KURUMIを操作
軽量言語(Lua, mruby)でGR-KURUMIを操作三七男 山本
 
Ubuntu なひととき
Ubuntu なひとときUbuntu なひととき
Ubuntu なひとときHiroshi Chonan
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
wxPython入門(大阪Pythonユーザの集まり2014/03)
wxPython入門(大阪Pythonユーザの集まり2014/03)wxPython入門(大阪Pythonユーザの集まり2014/03)
wxPython入門(大阪Pythonユーザの集まり2014/03)泰 増田
 

La actualidad más candente (20)

Skype4 pyで遊んでみた
Skype4 pyで遊んでみたSkype4 pyで遊んでみた
Skype4 pyで遊んでみた
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!
 
第2回勉強会資料 柏木
第2回勉強会資料 柏木第2回勉強会資料 柏木
第2回勉強会資料 柏木
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
OpenStreetMapの紹介
OpenStreetMapの紹介OpenStreetMapの紹介
OpenStreetMapの紹介
 
vscode pipenv docker
vscode pipenv dockervscode pipenv docker
vscode pipenv docker
 
『こなへん』ができるまで ☆リリース直前編☆
『こなへん』ができるまで ☆リリース直前編☆『こなへん』ができるまで ☆リリース直前編☆
『こなへん』ができるまで ☆リリース直前編☆
 
自作GPUへの道
自作GPUへの道自作GPUへの道
自作GPUへの道
 
3 Dプリンタでロボットを作ろう_プレンプロジェクト
3 Dプリンタでロボットを作ろう_プレンプロジェクト3 Dプリンタでロボットを作ろう_プレンプロジェクト
3 Dプリンタでロボットを作ろう_プレンプロジェクト
 
SPAJAMでやったこと
SPAJAMでやったことSPAJAMでやったこと
SPAJAMでやったこと
 
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
 
JumperT16でDonkeyCarを操作する。
JumperT16でDonkeyCarを操作する。JumperT16でDonkeyCarを操作する。
JumperT16でDonkeyCarを操作する。
 
Pythonでゲーム作る
Pythonでゲーム作るPythonでゲーム作る
Pythonでゲーム作る
 
About kitakat
About kitakatAbout kitakat
About kitakat
 
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた
 
軽量言語(Lua, mruby)でGR-KURUMIを操作
軽量言語(Lua, mruby)でGR-KURUMIを操作軽量言語(Lua, mruby)でGR-KURUMIを操作
軽量言語(Lua, mruby)でGR-KURUMIを操作
 
Ubuntu なひととき
Ubuntu なひとときUbuntu なひととき
Ubuntu なひととき
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
wxPython入門(大阪Pythonユーザの集まり2014/03)
wxPython入門(大阪Pythonユーザの集まり2014/03)wxPython入門(大阪Pythonユーザの集まり2014/03)
wxPython入門(大阪Pythonユーザの集まり2014/03)
 

Similar a Puppet×docker 夢の競演

ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較Sugawara Genki
 
究極のディストリビューションUbuntu
究極のディストリビューションUbuntu究極のディストリビューションUbuntu
究極のディストリビューションUbuntuKenichi Takahashi
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングRansui Iso
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
Androidへのdebianインストール奮闘記
Androidへのdebianインストール奮闘記Androidへのdebianインストール奮闘記
Androidへのdebianインストール奮闘記Tomoya Kawanishi
 
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をするChef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をするHidetoshi Ochiai
 
Windows8活用研究2 2013-01-26-公開用
Windows8活用研究2 2013-01-26-公開用Windows8活用研究2 2013-01-26-公開用
Windows8活用研究2 2013-01-26-公開用Tomokazu Kizawa
 
ザックリとDocker
ザックリとDockerザックリとDocker
ザックリとDockerionis111
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker雄哉 吉田
 
デスクトップ環境を作るらしいぞ!!!
デスクトップ環境を作るらしいぞ!!!デスクトップ環境を作るらしいぞ!!!
デスクトップ環境を作るらしいぞ!!!centra3
 
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作るKenichiro MATOHARA
 
XRDPで怠惰な日々を送る
XRDPで怠惰な日々を送るXRDPで怠惰な日々を送る
XRDPで怠惰な日々を送るmonochrojazz
 
AllwinnerタブレットのOSを作ってみる(中編)
AllwinnerタブレットのOSを作ってみる(中編)AllwinnerタブレットのOSを作ってみる(中編)
AllwinnerタブレットのOSを作ってみる(中編)shimadah
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集Wataru NOGUCHI
 
Dockerを使ってみよう
Dockerを使ってみようDockerを使ってみよう
Dockerを使ってみようRyo Adachi
 
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux 2
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux 2Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux 2
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux 2Netwalker lab kapper
 
Docker Machineを始めるには?
Docker Machineを始めるには?Docker Machineを始めるには?
Docker Machineを始めるには?Masahito Zembutsu
 

Similar a Puppet×docker 夢の競演 (20)

ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
 
究極のディストリビューションUbuntu
究極のディストリビューションUbuntu究極のディストリビューションUbuntu
究極のディストリビューションUbuntu
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Androidへのdebianインストール奮闘記
Androidへのdebianインストール奮闘記Androidへのdebianインストール奮闘記
Androidへのdebianインストール奮闘記
 
Ubuntu Tokyo Meeting 9.08
Ubuntu Tokyo Meeting 9.08Ubuntu Tokyo Meeting 9.08
Ubuntu Tokyo Meeting 9.08
 
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をするChef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
 
Windows8活用研究2 2013-01-26-公開用
Windows8活用研究2 2013-01-26-公開用Windows8活用研究2 2013-01-26-公開用
Windows8活用研究2 2013-01-26-公開用
 
ザックリとDocker
ザックリとDockerザックリとDocker
ザックリとDocker
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
Qt creatorでremote_debug
Qt creatorでremote_debugQt creatorでremote_debug
Qt creatorでremote_debug
 
デスクトップ環境を作るらしいぞ!!!
デスクトップ環境を作るらしいぞ!!!デスクトップ環境を作るらしいぞ!!!
デスクトップ環境を作るらしいぞ!!!
 
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
 
XRDPで怠惰な日々を送る
XRDPで怠惰な日々を送るXRDPで怠惰な日々を送る
XRDPで怠惰な日々を送る
 
AllwinnerタブレットのOSを作ってみる(中編)
AllwinnerタブレットのOSを作ってみる(中編)AllwinnerタブレットのOSを作ってみる(中編)
AllwinnerタブレットのOSを作ってみる(中編)
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
 
Dockerを使ってみよう
Dockerを使ってみようDockerを使ってみよう
Dockerを使ってみよう
 
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux 2
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux 2Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux 2
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux 2
 
Docker Machineを始めるには?
Docker Machineを始めるには?Docker Machineを始めるには?
Docker Machineを始めるには?
 
Robot Language and a Tail Recursive Interpreter
Robot Language and a Tail Recursive Interpreter Robot Language and a Tail Recursive Interpreter
Robot Language and a Tail Recursive Interpreter
 

Puppet×docker 夢の競演