SlideShare a Scribd company logo
1 of 47
Download to read offline
Yu Kitazume
株式会社 Engine Yard
2014/06/13!
DevOpsを実現する為の
Chef活用テクニック
2!
• Twitter: ukitazume
• GitHub: ukitazume
• Rubyist
• ポータルサイト、ソーシャルゲーム
•  でサポートエンジニア
自己紹介
3!
について!
Dublin!
Tokyo!San Francisco!
Portland!
HQ!
Office!
Personnel!
戦略的投資/パートナー!
•  Amazon!
•  Oracle !
•  Verizon!
•  Microsoft!
PaaSリーダー!
•  2006年設立!
•  従業員120人以上!
•  世界で展開!
•  数千のお客様!
4!
5!
• 技術評論社
• 豪華執筆陣
• 増刷決定!
• 基礎から応用まで
• 一冊でひとまず安心
Chef実践入門 好評発売中
6!
Engine Yardを選択されたお客様!
Agenda!
1. DevOpsとChef
2. Chefの基本
3. Chefをさらに活用するポイント
DevOpsとChef
9!
「DevOps」知っていますか?
10!
• 2009年 Velocity2009での講演
• 開発者(Dev)と運用者(Ops)が協力
• 変化に素早く柔軟対応する
DevOps
11!
12!
http://ey.io/devopscorp
13!
14!
組織の文化	
–  お互いを尊重	
–  お互いを信頼	
–  失敗に対する健全な態度	
–  相手を非難しない	
ツール	
–  自動化されたインフラ	
–  バージョン管理システムの共有	
–  ワンステップによるビルドとデプロイ	
–  フィーチャーフラグ	
–  メトリクスの共有	
–  IRCとインスタントメッセンジャーのbot	
10+ Deploy Per Day: Dev and Ops Cooperation
15!
• コードでインフラの構築を自動化
• サーバーの台数などに左右されない
• 手順書の手動実行より正確・高速
Infrastructure as Code
16!
これまでとこれから
17!
メディアでも話題に
18!
開発者(Dev)と運用者(Ops)が協力し
変化に素早く柔軟対応する
その鍵の一つ
Chefの基本
20!
• 構成管理ツール
• Ruby
• 状態を記述
• 冪等性
• 高い人気
Chef
21!
採用事例
22!
基本的な構成
クックブックを書く
アップロード クライアント起動&反映
変更の問い合わせ
Chef Server
Local
Chef Client
Chef Client
Chef Client
23!
サーバー無し構成(Chef Solo)
クックブックを書く
各サーバーへクックブック
を配置
Chef-Solo起動、反映
Local
Chef Client
Chef Client
Chef Client
24!
1.  対象ホストへのChefのインストール
2.  クックブック(レシピ)を書く
3.  クックブック(レシピ)を送る
4.  Chefクライアント or Chef Soloの実行
基本的な流れ
25!
• gem install chef は古い手法
• 現在のChefは必要なRubyなどを同梱
• /opt/chef 配下にインストールされる
• ChefにさらにGemを追加する際は注意
インストール
26!
クックブック
package "apache2" do!
action :install!
end!
!
service "apache2" do!
action :start!
end	
apache2のインストール
apache2のサービス化
27!
• 単純なパッケージ導入以上の処理が可能
• ohaiを使ったノード情報の取得
• 設定ファイルの動的な生成
• 繰り返し実行可能 → 冪等性・収束
apt-get / シェルスクリプトとの違い
28!
状態の記述 冪等性 収束	
Server
/var/lib/foo/
状態の記述	
 収束
29!
• Chef Clientのcronからの実行
• デーモン化も一応可能
• why run (dry run)も可能
• knife-solo
• なるべく頻繁に実行するのが望ましい
Chef / Chef Soloの実行
Chefをさらに活用するポイント
31!
• Chefのバージョン
• Chefの内部動作
• クックブックの書き方、品質
• コミュニティクックブック
Chefを使っている際の悩み
32!
Chef0.8, Chef10, Chef11 の違い
33!
• クックブックが実行される順序
• ファイルなどの変更タイミング
• 上から順番に実行されない
• リソースコレクションと収束
Chefの内部動作
34!
Chefの内部動作
35!
Resource Collection
Resource CollectionとResource間の依存	
Server
/var/lib/foo/
Resource	
収束	
•  directory “/var/lib/foo”!
•  package “apache2”!
•  ….!
•  ….!
•  ….!
Notification!
Subscribe
36!
Notificationの例
37!
Subscribeの例
38!
Subscribeの例
39!
詳しくはブログにて
40!
• Infrastructure as Code
• テストのないコードはレガシーコード
• クックブックが常に健全である事を担保
• 単体テストを行う
• 単体テストを継続的に実行する (CI)
クックブックのCIは欠かせない
41!
• Berkshelf / librarian-chef
クックブックの収集
• foodcritic
クックブックの規約チェック
• Test-kitchen
クックブックの単体テスト
• Severspec
サーバーの状態の単体テスト
クックブックのテストに使うツール
42!
テストスイートの構成
CI環境 Jenkins / Travis CI / Circle CI
クックブック クックブック
Test Kitchen
仮想マシン
Vagrant
VirtualBox
LXC
VMWare
Amazon EC2
FoodCritic Serverspec
Berkshelf / librarian-chef
Chef Solo
Chef Client
Chef Zero
43!
Qiitaに詳しく乗っています
44!
• 人類の叡智を結集
• 多様なプラットフォームに対応
• 利用者が少ない
• 作成者も少ない
コミュニティクックブック
45!
46!
cloud application management platform

More Related Content

What's hot

Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編kimulla
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることKazuaki KURIU
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすShunsuke Maeda
 
グループ制作注意
グループ制作注意グループ制作注意
グループ制作注意MakotoItoh
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるShunsuke Maeda
 
Azure DevOps × スクラム で実現するプロダクト開発のポイント #dotnetlab #jazug
Azure DevOps × スクラム で実現するプロダクト開発のポイント #dotnetlab #jazugAzure DevOps × スクラム で実現するプロダクト開発のポイント #dotnetlab #jazug
Azure DevOps × スクラム で実現するプロダクト開発のポイント #dotnetlab #jazug満徳 関
 
Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例
Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例
Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例Yukihiko SAWANOBORI
 
会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話Shuji Yamada
 
2014年のChefとInfrastructure as code
2014年のChefとInfrastructure as code2014年のChefとInfrastructure as code
2014年のChefとInfrastructure as codeYukihiko SAWANOBORI
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -Toshiyuki Hirata
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情Toshiyuki Hirata
 
Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Toshiyuki Hirata
 
Motivationware
MotivationwareMotivationware
MotivationwareKoichi ITO
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスToshiyuki Hirata
 
ドメイン『駆動』『開発』
ドメイン『駆動』『開発』ドメイン『駆動』『開発』
ドメイン『駆動』『開発』Hiroshi Maekawa
 
GitHubEnterpriseからBitbucket(Stash) への移行事例
GitHubEnterpriseからBitbucket(Stash) への移行事例GitHubEnterpriseからBitbucket(Stash) への移行事例
GitHubEnterpriseからBitbucket(Stash) への移行事例知教 本間
 
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬Masanori Satoh
 

What's hot (20)

Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
 
なれる!IL
なれる!ILなれる!IL
なれる!IL
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
グループ制作注意
グループ制作注意グループ制作注意
グループ制作注意
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
 
Azure DevOps × スクラム で実現するプロダクト開発のポイント #dotnetlab #jazug
Azure DevOps × スクラム で実現するプロダクト開発のポイント #dotnetlab #jazugAzure DevOps × スクラム で実現するプロダクト開発のポイント #dotnetlab #jazug
Azure DevOps × スクラム で実現するプロダクト開発のポイント #dotnetlab #jazug
 
Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例
Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例
Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例
 
会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話
 
2014年のChefとInfrastructure as code
2014年のChefとInfrastructure as code2014年のChefとInfrastructure as code
2014年のChefとInfrastructure as code
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -
 
DroidKaigi_devicefarm
DroidKaigi_devicefarmDroidKaigi_devicefarm
DroidKaigi_devicefarm
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情
 
Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化
 
Motivationware
MotivationwareMotivationware
Motivationware
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
 
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
 
ドメイン『駆動』『開発』
ドメイン『駆動』『開発』ドメイン『駆動』『開発』
ドメイン『駆動』『開発』
 
GitHubEnterpriseからBitbucket(Stash) への移行事例
GitHubEnterpriseからBitbucket(Stash) への移行事例GitHubEnterpriseからBitbucket(Stash) への移行事例
GitHubEnterpriseからBitbucket(Stash) への移行事例
 
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
 

Viewers also liked

A Supermarket of Your Own: Running a Private Chef Supermarket
A Supermarket of Your Own: Running a Private Chef SupermarketA Supermarket of Your Own: Running a Private Chef Supermarket
A Supermarket of Your Own: Running a Private Chef SupermarketNell Shamrell-Harrington
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
広島Ruby勉強会#35 - Chef入門
広島Ruby勉強会#35 - Chef入門広島Ruby勉強会#35 - Chef入門
広島Ruby勉強会#35 - Chef入門Tomokazu Ogawa
 
Standar Biaya Masukan (SBU) tahun 2016
Standar Biaya Masukan (SBU) tahun 2016Standar Biaya Masukan (SBU) tahun 2016
Standar Biaya Masukan (SBU) tahun 2016Muh Saleh
 

Viewers also liked (6)

The Berkshelf Way
The Berkshelf WayThe Berkshelf Way
The Berkshelf Way
 
A Supermarket of Your Own: Running a Private Chef Supermarket
A Supermarket of Your Own: Running a Private Chef SupermarketA Supermarket of Your Own: Running a Private Chef Supermarket
A Supermarket of Your Own: Running a Private Chef Supermarket
 
Chef環境の闇
Chef環境の闇Chef環境の闇
Chef環境の闇
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
広島Ruby勉強会#35 - Chef入門
広島Ruby勉強会#35 - Chef入門広島Ruby勉強会#35 - Chef入門
広島Ruby勉強会#35 - Chef入門
 
Standar Biaya Masukan (SBU) tahun 2016
Standar Biaya Masukan (SBU) tahun 2016Standar Biaya Masukan (SBU) tahun 2016
Standar Biaya Masukan (SBU) tahun 2016
 

Similar to DevOpsを実現する為のChef活用テクニック

作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていくRyo Mitoma
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版Yusuke Ando
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックYusuke Ando
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops裕貴 荒井
 
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 Osakaサイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 OsakaYuki Okada
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Tomoki Hasegawa
 
SwiftによるiOS開発再入門
SwiftによるiOS開発再入門SwiftによるiOS開発再入門
SwiftによるiOS開発再入門Tomoki Hasegawa
 
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際Tetsuji Koyama
 
20141112 Tech Valley #3 note - スタートアップでこだわったこと - takamaru
20141112 Tech Valley #3 note - スタートアップでこだわったこと - takamaru20141112 Tech Valley #3 note - スタートアップでこだわったこと - takamaru
20141112 Tech Valley #3 note - スタートアップでこだわったこと - takamaruShoei Takamaru
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークMaehana Tsuyoshi
 
大晦日のメッセージ配信の裏側
大晦日のメッセージ配信の裏側大晦日のメッセージ配信の裏側
大晦日のメッセージ配信の裏側Satoshi Noto
 
PaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyPaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyKatsunori Kawaguchi
 
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~Rakuten Group, Inc.
 
SwiftとCocoaPodsで始めるサクサクiOS開発!
SwiftとCocoaPodsで始めるサクサクiOS開発! SwiftとCocoaPodsで始めるサクサクiOS開発!
SwiftとCocoaPodsで始めるサクサクiOS開発! Koji Shiraishi
 
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]Yukihiko SAWANOBORI
 
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話Shota Umeda
 
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用
第2回 JAWS−UG 神戸  開発運用の現場でのChef活用第2回 JAWS−UG 神戸  開発運用の現場でのChef活用
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用Takuro Sasaki
 
サイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOpsサイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOpsShuhei Eda
 

Similar to DevOpsを実現する為のChef活用テクニック (20)

作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops
 
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 Osakaサイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
 
SwiftによるiOS開発再入門
SwiftによるiOS開発再入門SwiftによるiOS開発再入門
SwiftによるiOS開発再入門
 
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
 
20141112 Tech Valley #3 note - スタートアップでこだわったこと - takamaru
20141112 Tech Valley #3 note - スタートアップでこだわったこと - takamaru20141112 Tech Valley #3 note - スタートアップでこだわったこと - takamaru
20141112 Tech Valley #3 note - スタートアップでこだわったこと - takamaru
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワーク
 
大晦日のメッセージ配信の裏側
大晦日のメッセージ配信の裏側大晦日のメッセージ配信の裏側
大晦日のメッセージ配信の裏側
 
Dockerとdev ops
Dockerとdev opsDockerとdev ops
Dockerとdev ops
 
安心Chef開発
安心Chef開発安心Chef開発
安心Chef開発
 
PaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyPaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happy
 
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
 
SwiftとCocoaPodsで始めるサクサクiOS開発!
SwiftとCocoaPodsで始めるサクサクiOS開発! SwiftとCocoaPodsで始めるサクサクiOS開発!
SwiftとCocoaPodsで始めるサクサクiOS開発!
 
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
 
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話
 
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用
第2回 JAWS−UG 神戸  開発運用の現場でのChef活用第2回 JAWS−UG 神戸  開発運用の現場でのChef活用
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用
 
サイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOpsサイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOps
 

DevOpsを実現する為のChef活用テクニック