SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
自己紹介
•石橋 直樹 ( paty_fakename @ twitter )
•Rubyを真面目に触り始めて7年ぐらい?
•認定資格のSilverとGold v2.1は取ったけどほぼ忘れた
•お仕事ではAWSとかjenkinsとかcapistranoとか利用
•最近はCTFの大会に参加する頻度増加中
•はてブロやQiitaやってます
2015/7/25とっとるびー19回 2/ 47
最近思うこと
とっとるびー濃ゆい
※悪くないです
2015/7/25とっとるびー19回 3/ 47
最近思うこと
Ruby比率低い(笑)
※嫌いじゃありません
2015/7/25とっとるびー19回 4/ 47
最近思うこと
たまには軽めのRuby
ネタもいいじゃないですか
※予防線
2015/7/25とっとるびー19回 5/ 47
最近思うこと
てことで軽めの
Rubyネタいっくよー
2015/7/25とっとるびー19回 6/ 47
本日の発表
•itamae使ってみた
•itamaeでDockerを調理してみた
2015/7/25とっとるびー19回 7/ 47
本日の発表で使った環境
•CentOS 7.1.1503
•Ruby 2.2.1p85
•itamae 1.4.0
•Docker 1.6.2
2015/7/25とっとるびー19回 8/ 47
itamae使ってみた
2015/7/25とっとるびー19回 9/ 47
itamaeとは?
•クックパッドの中の人謹製のプロビジョニングツール
•RubyDSLで書ける
•元はlight-chefとして作られていたが公開に合わせてitamaeに改名?
•書き方はchefと同じ
2015/7/25とっとるびー19回 10/ 47
itamaeの特徴
•chefの複雑な機能とかディレクトリ構造を簡略化したものなイメージ
•chefを触ったことがある人なら簡単に使える
•学習コストが低い
•CLI部分はThorで実装、各バックエンドへのコマンド実行はspecinfra
•gemの中身が読みやすい
2015/7/25とっとるびー19回 11/ 47
実際に使ってみる
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
実行コマンド
•itamae [バックエンド] [レシピファイル] [オプション]
2015/7/25とっとるびー19回 13/ 47
バックエンド
•local ローカルホストで実行
•ssh 指定されたホストにssh接続して実行
•docker ローカルにDockerコンテナを起動して実行
2015/7/25とっとるびー19回 14/ 47
オプション
•-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
レシピ
• 基本的な書き方
2015/7/25
リソース “対象パス” do
アトリビュート
end
•リソース
•バックエンドで何を操作するのか ファイル操作、コマンド実行 etc
•多くのリソースがブロックの省略可
とっとるびー19回 16/ 47
レシピ - リソース(14種類)
•directory
•ディレクトリの作成削除
•user, group, link
•ユーザ、グループ、シンボリックリンク作成
•remote_file, remote_directory
•sourceで指定したディレクトリ、ファイルをバックエンドに転送
2015/7/25とっとるびー19回 17/ 47
レシピ - リソース(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
レシピ - リソース(14種類)
•service
•サービスの起動やデフォルト起動設定を変更
•package
•パッケージのインストール
•gem_package
•gemのインストール、アンインストール
2015/7/25とっとるびー19回 19/ 47
レシピ - リソース(14種類)
•git
•指定リポジトリをclone, fetch
•local_ruby_block
•ローカルホスト(≠バックエンド)でrubyを実行
2015/7/25とっとるびー19回 20/ 47
レシピ - リソース(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
レシピ - リソース(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
使ってみた感想
•なんとなく書き始められてとにかく手軽
•ディレクトリ構成に縛られない
•knife solo initで用途不明のディレクトリ多数とかにならない
•まんまchefなので、chefを触ったことあれば乗り換えは簡単:
2015/7/25とっとるびー19回 23/ 47
つまり
•どんなディレクトリ構成にしようと
•長大なレシピを作ろうと
•環境ごとにレシピを作って全然dryじゃなくなろうと
2015/7/25とっとるびー19回 24/ 47
2015/7/25とっとるびー19回 25/ 47
自由だ~!!
それはヤバイので
•ベストプラクティス見ましょう
•https://github.com/itamae-kitchen/itamae/wiki/Best-Practice
•ディレクトリ構成のお勧めとか書いてある
•remote_file, template リソースはベストプラクティスに沿ってディレクトリを探す
• source未指定時のデフォルト動作
2015/7/25とっとるびー19回 26/ 47
それはヤバイので
•レシピは適切に分割しましょう
•include_recipe “” でレシピのインクルードが可能
•roleディレクトリを作ってロールごとのレシピを書く
•ロールごとのレシピでinclude_recipeをして必要なレシピを組み合わせる
2015/7/25とっとるびー19回 27/ 47
それはヤバイので
•パラメータはnodeディレクトリ以下に別ファイルで置く
•-y でYAMLファイルが読み込める
•-j でjsonファイルが読み込める
•レシピ中では node[] でアクセス可能
2015/7/25とっとるびー19回 28/ 47
それはヤバイので
•公開されてるレシピやリソースのプラグインを取ってきて拡張できる
•chefでいうところのberkshelfに相当するのかな
•itamae-plugin-(recipe | resource)-name の命名規則でgemとして公開されてる
•Gemfileに追記するだけで使えるので管理が楽
2015/7/25とっとるびー19回 29/ 47
改めて感想
•色々やりだすと結局chefに行きつく感じ
•必要に応じて自分で拡張するので、chefよりやりやすいけど
•ssh接続は大規模サーバ相手には向かない
•やるならレシピだけばらまいて各サーバでlocal実行なのかな
•必要なドキュメントはあるし、gemも読みやすいので好き
2015/7/25とっとるびー19回 30/ 47
itamaeで
Dockerを調理してみた
2015/7/25とっとるびー19回 31/ 47
・・・けど
あまり面白くなかった
2015/7/25とっとるびー19回 32/ 47
なのでここからは
ボリューム少な目
2015/7/25とっとるびー19回 33/ 47
Docker紹介
•割愛
•「Docker とは」 で検索検索
2015/7/25とっとるびー19回 34/ 47
準備
•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
実行
•--image でベースイメージを指定
•ローカルになければdockerhubから探して取ってきてくれる
•--container で稼働中のコンテナを指定することも可能
•一部のリソースが使えなかったりする
•正常終了したらイメージを保存
2015/7/25
$ rvmsudo bundle exec itamae docker sample.rb --image=centos:centos6
とっとるびー19回 36/ 47
実行
•イメージを保存・・・
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
毎回別イメージ?!
実行
•稼働中のコンテナを指定して実行した場合も終了時にイメージ作成
•もちろん毎回別イメージ
•当然だけどコンテナ自身にも変更は入ってる
2015/7/25とっとるびー19回 39/ 47
リソース制限
•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
ぷちハマり
•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
ぷちハマり
•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.
感想
•itamae! Docker! の勢いで行ったけどそこまで面白くなかった
•Dockerfileと比較して、毎回別イメージだったりキャッシュないのがつらい
•ベースになるイメージを予め作っておいて、そこに対して実行するのが正解か
•けどcentosはそのままだとタイムアウトするから・・・
•ベースイメージはDockerfileで作って、レシピでdocker buildしちゃうか
•ssh開けてイメージ起動、itamae sshすればいいわけですねわかりますん
2015/7/25とっとるびー19回 43/ 47
まとめ
•itamae
•chefを軽く使えるようにしたもの
•構文はchefそのまま、ディレクトリ構造に縛られない、gem読みやすい
•バックエンドやリソースの拡張gemが公開されてる
•itamaeはとっつきやすい
•好きにやれるけど、ベストプラクティスは読んどいた方がいい
2015/7/25とっとるびー19回 44/ 47
まとめ
•Dockerを調理するにはいまひとつ
•DockerfileのRubyDSL版だ!と思ってると苦労する
•コンテナを対象にした場合は一部のリソースが使えない
•途中のイメージキャッシュなし。終了時は毎回別イメージ保存
•ベースになるイメージを作っておいて、そこから調理するのがよい
2015/7/25とっとるびー19回 45/ 47
2015/7/25
enjoy itamae !
╭( ・ㅂ・)‫و‬
とっとるびー19回 46/ 47
itamaeに入門してDocker調理してみた

Weitere ähnliche Inhalte

Was ist angesagt?

わかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeわかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeShohei Kobayashi
 
Web技術勉強会 20120609
Web技術勉強会 20120609Web技術勉強会 20120609
Web技術勉強会 20120609龍一 田中
 
Infrastructure as codeのススメ
Infrastructure as codeのススメInfrastructure as codeのススメ
Infrastructure as codeのススメkanji htmt
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話Naoto Koshikawa
 
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例Naoto Koshikawa
 
なぜか技術書典5で 3サークルの運営を同時にやった話
なぜか技術書典5で 3サークルの運営を同時にやった話なぜか技術書典5で 3サークルの運営を同時にやった話
なぜか技術書典5で 3サークルの運営を同時にやった話ota42y
 
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよMasaru Matsuo
 
TypeScript 入門してみる
TypeScript 入門してみるTypeScript 入門してみる
TypeScript 入門してみるKen Fukuyama
 
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworksYAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworksNaoto Koshikawa
 
bootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのかbootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのかota42y
 

Was ist angesagt? (16)

わかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeわかると楽しいInfrastructure as code
わかると楽しいInfrastructure as code
 
Web技術勉強会 20120609
Web技術勉強会 20120609Web技術勉強会 20120609
Web技術勉強会 20120609
 
Play!
Play!Play!
Play!
 
Infrastructure as codeのススメ
Infrastructure as codeのススメInfrastructure as codeのススメ
Infrastructure as codeのススメ
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
2015 07-04-ruby rails
2015 07-04-ruby rails2015 07-04-ruby rails
2015 07-04-ruby rails
 
2015 12-19-ruby rails
2015 12-19-ruby rails2015 12-19-ruby rails
2015 12-19-ruby rails
 
Kyakusaki.rb
Kyakusaki.rbKyakusaki.rb
Kyakusaki.rb
 
♡PHPが恋しい話♡
♡PHPが恋しい話♡♡PHPが恋しい話♡
♡PHPが恋しい話♡
 
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例
 
なぜか技術書典5で 3サークルの運営を同時にやった話
なぜか技術書典5で 3サークルの運営を同時にやった話なぜか技術書典5で 3サークルの運営を同時にやった話
なぜか技術書典5で 3サークルの運営を同時にやった話
 
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
 
TypeScript 独習会
TypeScript 独習会TypeScript 独習会
TypeScript 独習会
 
TypeScript 入門してみる
TypeScript 入門してみるTypeScript 入門してみる
TypeScript 入門してみる
 
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworksYAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
 
bootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのかbootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのか
 

Kürzlich hochgeladen

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。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論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス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論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介: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の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 

Kürzlich hochgeladen (12)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。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論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス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論文紹介: 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日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

itamaeに入門してDocker調理してみた