Suche senden
Hochladen
itamaeに入門してDocker調理してみた
•
3 gefällt mir
•
4,080 views
Naoki Ishibashi
Folgen
とっとるびー19回で発表しました itamae+Dockerを触ってみたのでその紹介になります
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 47
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
130427 kansai-emacs-github
130427 kansai-emacs-github
Yuki Shibazaki
Writing One Liner by Golang(Japanese)
Writing One Liner by Golang(Japanese)
kuwa1 桑島
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
Hiroshi Toda
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料
Shohei Kobayashi
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
Takafumi ONAKA
師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
hiboma
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
2016 02-09-co-edo lt
2016 02-09-co-edo lt
Hiroshi Oyamada
Empfohlen
130427 kansai-emacs-github
130427 kansai-emacs-github
Yuki Shibazaki
Writing One Liner by Golang(Japanese)
Writing One Liner by Golang(Japanese)
kuwa1 桑島
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
Hiroshi Toda
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料
Shohei Kobayashi
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
Takafumi ONAKA
師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
hiboma
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
2016 02-09-co-edo lt
2016 02-09-co-edo lt
Hiroshi Oyamada
わかると楽しいInfrastructure as code
わかると楽しいInfrastructure as code
Shohei Kobayashi
Web技術勉強会 20120609
Web技術勉強会 20120609
龍一 田中
Play!
Play!
Satoshi Ando
Infrastructure as codeのススメ
Infrastructure as codeのススメ
kanji htmt
MF GeeksNight pplogの話
MF GeeksNight pplogの話
Naoto Koshikawa
2015 07-04-ruby rails
2015 07-04-ruby rails
Hiroshi Oyamada
2015 12-19-ruby rails
2015 12-19-ruby rails
Hiroshi Oyamada
Kyakusaki.rb
Kyakusaki.rb
Yasuyuki Fujikawa
♡PHPが恋しい話♡
♡PHPが恋しい話♡
Shinichi Takahashi
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例
Naoto Koshikawa
なぜか技術書典5で 3サークルの運営を同時にやった話
なぜか技術書典5で 3サークルの運営を同時にやった話
ota42y
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
Masaru Matsuo
TypeScript 独習会
TypeScript 独習会
Masahiro Wakame
TypeScript 入門してみる
TypeScript 入門してみる
Ken Fukuyama
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
Naoto Koshikawa
bootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのか
ota42y
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Weitere ähnliche Inhalte
Was ist angesagt?
わかると楽しいInfrastructure as code
わかると楽しいInfrastructure as code
Shohei Kobayashi
Web技術勉強会 20120609
Web技術勉強会 20120609
龍一 田中
Play!
Play!
Satoshi Ando
Infrastructure as codeのススメ
Infrastructure as codeのススメ
kanji htmt
MF GeeksNight pplogの話
MF GeeksNight pplogの話
Naoto Koshikawa
2015 07-04-ruby rails
2015 07-04-ruby rails
Hiroshi Oyamada
2015 12-19-ruby rails
2015 12-19-ruby rails
Hiroshi Oyamada
Kyakusaki.rb
Kyakusaki.rb
Yasuyuki Fujikawa
♡PHPが恋しい話♡
♡PHPが恋しい話♡
Shinichi Takahashi
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例
Naoto Koshikawa
なぜか技術書典5で 3サークルの運営を同時にやった話
なぜか技術書典5で 3サークルの運営を同時にやった話
ota42y
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
Masaru Matsuo
TypeScript 独習会
TypeScript 独習会
Masahiro Wakame
TypeScript 入門してみる
TypeScript 入門してみる
Ken Fukuyama
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
Naoto Koshikawa
bootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのか
ota42y
Was ist angesagt?
(16)
わかると楽しいInfrastructure as code
わかると楽しいInfrastructure as code
Web技術勉強会 20120609
Web技術勉強会 20120609
Play!
Play!
Infrastructure as codeのススメ
Infrastructure as codeのススメ
MF GeeksNight pplogの話
MF GeeksNight pplogの話
2015 07-04-ruby rails
2015 07-04-ruby rails
2015 12-19-ruby rails
2015 12-19-ruby rails
Kyakusaki.rb
Kyakusaki.rb
♡PHPが恋しい話♡
♡PHPが恋しい話♡
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例
なぜか技術書典5で 3サークルの運営を同時にやった話
なぜか技術書典5で 3サークルの運営を同時にやった話
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
TypeScript 独習会
TypeScript 独習会
TypeScript 入門してみる
TypeScript 入門してみる
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
bootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのか
Kürzlich hochgeladen
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Kürzlich hochgeladen
(12)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
itamaeに入門してDocker調理してみた
1.
2.
自己紹介 •石橋 直樹 (
paty_fakename @ twitter ) •Rubyを真面目に触り始めて7年ぐらい? •認定資格のSilverとGold v2.1は取ったけどほぼ忘れた •お仕事ではAWSとかjenkinsとかcapistranoとか利用 •最近はCTFの大会に参加する頻度増加中 •はてブロやQiitaやってます 2015/7/25とっとるびー19回 2/ 47
3.
最近思うこと とっとるびー濃ゆい ※悪くないです 2015/7/25とっとるびー19回 3/ 47
4.
最近思うこと Ruby比率低い(笑) ※嫌いじゃありません 2015/7/25とっとるびー19回 4/ 47
5.
最近思うこと たまには軽めのRuby ネタもいいじゃないですか ※予防線 2015/7/25とっとるびー19回 5/ 47
6.
最近思うこと てことで軽めの Rubyネタいっくよー 2015/7/25とっとるびー19回 6/ 47
7.
本日の発表 •itamae使ってみた •itamaeでDockerを調理してみた 2015/7/25とっとるびー19回 7/ 47
8.
本日の発表で使った環境 •CentOS 7.1.1503 •Ruby 2.2.1p85 •itamae
1.4.0 •Docker 1.6.2 2015/7/25とっとるびー19回 8/ 47
9.
itamae使ってみた 2015/7/25とっとるびー19回 9/ 47
10.
itamaeとは? •クックパッドの中の人謹製のプロビジョニングツール •RubyDSLで書ける •元はlight-chefとして作られていたが公開に合わせてitamaeに改名? •書き方はchefと同じ 2015/7/25とっとるびー19回 10/ 47
11.
itamaeの特徴 •chefの複雑な機能とかディレクトリ構造を簡略化したものなイメージ •chefを触ったことがある人なら簡単に使える •学習コストが低い •CLI部分はThorで実装、各バックエンドへのコマンド実行はspecinfra •gemの中身が読みやすい 2015/7/25とっとるびー19回 11/ 47
12.
実際に使ってみる 2015/7/25 $ mkdir itamaesan
&& cd itamaesan $ echo "source 'https://rubygems.org'" > Gemfile $ echo "gem 'itamae'" >> Gemfile $ echo "package 'httpd'" > sample.rb $ bundle install $ rvmsudo bundle exec itamae local sample.rb とっとるびー19回 12/ 47
13.
実行コマンド •itamae [バックエンド] [レシピファイル]
[オプション] 2015/7/25とっとるびー19回 13/ 47
14.
バックエンド •local ローカルホストで実行 •ssh 指定されたホストにssh接続して実行 •docker
ローカルにDockerコンテナを起動して実行 2015/7/25とっとるびー19回 14/ 47
15.
オプション •-j, [ --node-json=NODE_JSON
] •-y, [ --node-yaml=NODE_YAML ] •-n, [ --dry-run ] •-l, [ --log-level ] <= 個人的に -l debug をよく使う •sshの場合はさらにssh系のオプションが増える ※proxy未対応ぽい 2015/7/25とっとるびー19回 15/ 47
16.
レシピ • 基本的な書き方 2015/7/25 リソース “対象パス”
do アトリビュート end •リソース •バックエンドで何を操作するのか ファイル操作、コマンド実行 etc •多くのリソースがブロックの省略可 とっとるびー19回 16/ 47
17.
レシピ - リソース(14種類) •directory •ディレクトリの作成削除 •user,
group, link •ユーザ、グループ、シンボリックリンク作成 •remote_file, remote_directory •sourceで指定したディレクトリ、ファイルをバックエンドに転送 2015/7/25とっとるびー19回 17/ 47
18.
レシピ - リソース(14種類) •file •ファイルの作成削除、それと編集も可能 2015/7/25 file
“/path/to/dest” do action :edit block do |content| content.gsub!(“Hello World”, “Hello itamae”) end end とっとるびー19回 18/ 47
19.
レシピ - リソース(14種類) •service •サービスの起動やデフォルト起動設定を変更 •package •パッケージのインストール •gem_package •gemのインストール、アンインストール 2015/7/25とっとるびー19回
19/ 47
20.
レシピ - リソース(14種類) •git •指定リポジトリをclone,
fetch •local_ruby_block •ローカルホスト(≠バックエンド)でrubyを実行 2015/7/25とっとるびー19回 20/ 47
21.
レシピ - リソース(14種類) •template •sourceで指定したerbファイルを実行して配置する •variablesでパラメータをerbに渡せる 2015/7/25 template
“/path/to/dest” do action :create source “template.erb” variables(key: value) end とっとるびー19回 21/ 47
22.
レシピ - リソース(14種類) •execute •コマンドを直接実行 •ぶっちゃけこれさえあればry 2015/7/25とっとるびー19回
22/ 47 execute “command description” do action :run command <<-EOC touch /path/to/dest echo “Hello itamae” EOC not_if “test -e /path/to/dest” end
23.
使ってみた感想 •なんとなく書き始められてとにかく手軽 •ディレクトリ構成に縛られない •knife solo initで用途不明のディレクトリ多数とかにならない •まんまchefなので、chefを触ったことあれば乗り換えは簡単: 2015/7/25とっとるびー19回
23/ 47
24.
つまり •どんなディレクトリ構成にしようと •長大なレシピを作ろうと •環境ごとにレシピを作って全然dryじゃなくなろうと 2015/7/25とっとるびー19回 24/ 47
25.
2015/7/25とっとるびー19回 25/ 47 自由だ~!!
26.
それはヤバイので •ベストプラクティス見ましょう •https://github.com/itamae-kitchen/itamae/wiki/Best-Practice •ディレクトリ構成のお勧めとか書いてある •remote_file, template リソースはベストプラクティスに沿ってディレクトリを探す •
source未指定時のデフォルト動作 2015/7/25とっとるびー19回 26/ 47
27.
それはヤバイので •レシピは適切に分割しましょう •include_recipe “” でレシピのインクルードが可能 •roleディレクトリを作ってロールごとのレシピを書く •ロールごとのレシピでinclude_recipeをして必要なレシピを組み合わせる 2015/7/25とっとるびー19回
27/ 47
28.
それはヤバイので •パラメータはnodeディレクトリ以下に別ファイルで置く •-y でYAMLファイルが読み込める •-j でjsonファイルが読み込める •レシピ中では
node[] でアクセス可能 2015/7/25とっとるびー19回 28/ 47
29.
それはヤバイので •公開されてるレシピやリソースのプラグインを取ってきて拡張できる •chefでいうところのberkshelfに相当するのかな •itamae-plugin-(recipe | resource)-name
の命名規則でgemとして公開されてる •Gemfileに追記するだけで使えるので管理が楽 2015/7/25とっとるびー19回 29/ 47
30.
改めて感想 •色々やりだすと結局chefに行きつく感じ •必要に応じて自分で拡張するので、chefよりやりやすいけど •ssh接続は大規模サーバ相手には向かない •やるならレシピだけばらまいて各サーバでlocal実行なのかな •必要なドキュメントはあるし、gemも読みやすいので好き 2015/7/25とっとるびー19回 30/ 47
31.
itamaeで Dockerを調理してみた 2015/7/25とっとるびー19回 31/ 47
32.
・・・けど あまり面白くなかった 2015/7/25とっとるびー19回 32/ 47
33.
なのでここからは ボリューム少な目 2015/7/25とっとるびー19回 33/ 47
34.
Docker紹介 •割愛 •「Docker とは」 で検索検索 2015/7/25とっとるびー19回
34/ 47
35.
準備 •dockerインストール •docker起動 •gemインストール 2015/7/25 $ sudo yum
install -y docker $ sudo systemctl start docker $ echo “gem ‘docker-api’” >> Gemfile && bundle install とっとるびー19回 35/ 47
36.
実行 •--image でベースイメージを指定 •ローカルになければdockerhubから探して取ってきてくれる •--container で稼働中のコンテナを指定することも可能 •一部のリソースが使えなかったりする •正常終了したらイメージを保存 2015/7/25 $
rvmsudo bundle exec itamae docker sample.rb --image=centos:centos6 とっとるびー19回 36/ 47
37.
実行 •イメージを保存・・・ 2015/7/25 $ rvmsudo bundle
exec itamae docker sample.rb --image=centos:centos6 INFO : Image created: 505909ab50e007ae6e3acccb3c42615596746c6ee27a92bdd0a85ebb407f3f82 $ rvmsudo bundle exec itamae docker sample.rb --image=centos:centos6 INFO : Image created: 5a7254319e953337a8f761430eab199ab5b3472e8004395592107918a9f5a676 とっとるびー19回 37/ 47
38.
毎回別イメージ?!
39.
実行 •稼働中のコンテナを指定して実行した場合も終了時にイメージ作成 •もちろん毎回別イメージ •当然だけどコンテナ自身にも変更は入ってる 2015/7/25とっとるびー19回 39/ 47
40.
リソース制限 •remote_file, templateリソースは稼働中のコンテナに対しては使えない •イメージ指定の場合のみ可能っぽい 2015/7/25 $ rvmsudo
bundle exec itamae docker sample2.rb --container=9bb511969645 INFO : Starting Itamae... INFO : Recipe: /home/paty/itamaesan/hoge.rb /home/paty/.rvm/gems/ruby-2.2.1/gems/specinfra- 2.38.1/lib/specinfra/backend/docker.rb:44:in `send_file': Cannot call send_file without docker_image. (RuntimeError) とっとるびー19回 40/ 47
41.
ぷちハマり •package リソースでdocker-apiがタイムアウトする •centのデフォルトイメージだとyumのdb初期化とかが走るせい •一度yumを起動した後のイメージなら問題ない 2015/7/25 $ rvmsudo
bundle exec itamae docker sample2.rb --image=centos:centos6 INFO : package[httpd] installed will change from 'false' to 'true' `rescue in request': read timeout reached (Docker::Error::TimeoutError) とっとるびー19回 41/ 47
42.
ぷちハマり •remote_directoryが失敗する •/tmp/itamae_tmp/xxx に一度配置して、その後の移動で失敗 •深く追ってないので原因不明。itamaeのソースとしては変なとこなかった 2015/7/25とっとるびー19回 42/
47 $ rvmsudo bundle exec itamae docker sample3.rb --image=centos:centos6 ERROR : stderr | mv: cannot stat `/tmp/itamae_tmp/1437701394.3366778': No such file or directory ERROR : Command `mv /tmp/itamae_tmp/1437701394.3366778 /tmp/test` failed. (exit status: 1) ERROR : remote_directory[/tmp/test] Failed.
43.
感想 •itamae! Docker! の勢いで行ったけどそこまで面白くなかった •Dockerfileと比較して、毎回別イメージだったりキャッシュないのがつらい •ベースになるイメージを予め作っておいて、そこに対して実行するのが正解か •けどcentosはそのままだとタイムアウトするから・・・ •ベースイメージはDockerfileで作って、レシピでdocker
buildしちゃうか •ssh開けてイメージ起動、itamae sshすればいいわけですねわかりますん 2015/7/25とっとるびー19回 43/ 47
44.
まとめ •itamae •chefを軽く使えるようにしたもの •構文はchefそのまま、ディレクトリ構造に縛られない、gem読みやすい •バックエンドやリソースの拡張gemが公開されてる •itamaeはとっつきやすい •好きにやれるけど、ベストプラクティスは読んどいた方がいい 2015/7/25とっとるびー19回 44/ 47
45.
まとめ •Dockerを調理するにはいまひとつ •DockerfileのRubyDSL版だ!と思ってると苦労する •コンテナを対象にした場合は一部のリソースが使えない •途中のイメージキャッシュなし。終了時は毎回別イメージ保存 •ベースになるイメージを作っておいて、そこから調理するのがよい 2015/7/25とっとるびー19回 45/ 47
46.
2015/7/25 enjoy itamae ! ╭(
・ㅂ・)و とっとるびー19回 46/ 47
Jetzt herunterladen