Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
おひとりさま環境でのChef-solo使用例
Search
thinkAmi
May 12, 2013
Programming
1.5k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
おひとりさま環境でのChef-solo使用例
NSEG #39 で発表した時のスライドです。
thinkAmi
May 12, 2013
More Decks by thinkAmi
See All by thinkAmi
知ろう!使おう!HDF5ファイル!/pycon-jp-2019-talk
thinkami
5
11k
Djangoでのメール送信 - 設定からテストまで/djangocongress-jp-2019-talk
thinkami
1
13k
Django・WSGIミドルウェア入門/django-congress-jp-2018-talk
thinkami
4
5.6k
自分のための機械学習をしてみた話
thinkami
0
680
Xamarinで作るAndroid Wearアプリ
thinkami
1
2.8k
FluentMigratorでDBマイグレーション
thinkami
0
2.3k
デプロイボタンを使ってみた
thinkami
0
1.1k
Vagrant + Berkshelf でお手軽写経環境構築
thinkami
1
1.4k
Twilio入門
thinkami
0
1.7k
Other Decks in Programming
See All in Programming
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
初めてのKubernetes 本番運用でハマった話
oku053
0
120
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
580
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
100
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
200
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
480
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
310
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
240
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
140
act1-costs.pdf
sumedhbala
0
210
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
280
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
260
Featured
See All Featured
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
180
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
190
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
880
The Mindset for Success: Future Career Progression
greggifford
PRO
0
410
Why Our Code Smells
bkeepers
PRO
340
58k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
650
Abbi's Birthday
coloredviolet
3
8.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Transcript
おひとりさま環境での Chef-solo 使用例 NSEG #39 2013.05.11 @thinkAmi
自己紹介 • @thinkAmi • hatenaID: thinkAmi • C#, Python, Ruby
• 自社インフラ管理 • NSEG, GDG信州 • りんご好き • 食べたりんごの内訳を表示するアプリを作成とか • http://ringo-tabetter.herokuapp.com/
PR • 5/25(土) DevFestJapan2013 信州会場 – 塩尻インキュベーションプラザ (SIP) – 5/15~17に開かれるGoogle
I/Oの報告会 • セッションの解説・得られた情報の報告 etc • Google+ ハングアウトで日本の7会場を結び交流 – 珍しいガジェットも登場予定 • NexusQ, Pebble, etc (Glassは希望的観測) – Google Developer Expertの方々も参加
PR • 5/25(土) DevFestJapan2013 信州会場 – 詳細は... • イベントページ –
https://sites.google.com/site/devfestjapan2013/ • DevFest Japan 2013 信州会場 紹介pdf – https://docs.google.com/file/d/0B- jPssOUp2xCNEx5aWt0ZXVrQ0U/edit?usp=sharing • GDG信州のハッシュタグ #gdgshinshu – 5/15深夜、Google I/O Extend 信州会場?! – http://www.zusaar.com/event/654003
アジェンダ • ある環境のおはなし • Chef-solo, knife-solo, Vagrant • その先へ •
デモ
その前に • デモの準備に時間がかかるため、 事前に仕込んでいます • 準備が終わったら、手元の携帯電話に 連絡がきますが、気にしないでください
アジェンダ • ある環境のおはなし • Chef-solo, knife-solo, Vagrant • その先へ •
デモ
ある環境のおはなし • 某おひとりさま – Windows使い – 某社内インフラで利用
ある環境のおはなし • 仮想マシン登場前 – 物理サーバーを用意・インストール • サーバーを買ってもらうのが大変... • 再インストールや類似環境の構築が手間...
ある環境のおはなし • 仮想マシン登場後 – 物理サーバー1つで、複数の環境を構築 – スナップショットやVMファイルのコピーで、 環境の複製などが容易に – がんがん仮想マシンを作るようになった
ある環境のおはなし • そのうちに... – あれ、どのVMが最新版だっけ... – そもそも何が入っているっけ... – 手順はどこだっけ...
ある環境のおはなし • ひどいことに
ある環境のおはなし • デジャヴ
ある環境のおはなし • 解決方法を考える – 変更履歴を残す • 履歴を書き忘れる... – 環境の内容を残す •
環境を書き忘れる... – バージョン管理 • ファイルサイズが大きいとか... • ...どれもダメっぽい
ある環境のおはなし • 動かないドキュメントより、 それだけで動く何かがほしい!!
アジェンダ • ある環境のおはなし • Chef-solo, knife-solo, Vagrant • その先へ •
デモ
Chef (シェフ) • サーバーのシステム構築・運用を 管理・自動化するフレームワーク – Puppetみたいなもの • Rubyで設定を書く •
Chef-ServerとChef-soloがある
Chef • 用語 – Cookbook • Recipe • Template •
Attribute – Node – Role – etc
Chef • まずはこれだけ – Cookbook • Recipe • Attribute •
Template – Node – Role – etc
Chef • Cookbook – 環境設定の定義を、まとめたもの – 環境設定の定義 • Recipe •
Template • Attribute • etc
Chef • Recipe – インストールや設定などの実行手順を記載
Chef • 例) Apache2のRecipe – インストール package "apache2" do action
:install end – 起動 service "apache2" do action :start end
Chef • Chefの管理・運用は手間...
knife(ナイフ) • Chefの管理・運用を行うためのツール – cookbookのひな形を作成 – cookbookを転送してサーバーに適用 – etc •
Chefに同梱 • プラグインあり – knife-soloとか
knife-solo(ナイフソロ) • Chef-solo用にknifeを拡張するもの • Windowsでも動く – Windowsにはrsnyc(アールシンク) がないことから、 cookbookの転送は小細工する必要あり •
Issue #167に上がっているので、希望を持つ https://github.com/matschaffer/knife-solo/issues/167 – rsyncがないとはいえ、Windowsにおいても 他の設定を自力でやるよりは、はるかにマシ
ところで • 某おひとりさま環境 – 仮想環境の構築で使いたいんだが...
Vagrant (ベイグラント) • VirtualBoxのVMを設定・操作するツール – Rubyで設定を書く • Chefと連携可能 – Chefのcookbooks,
Recipe等を指定
Vagrant • 用語 – VagrantBox – Vagrantfile
Vagrant • VagrantBox – 仮想マシンのひな形 (OSイメージ) – 公開されているものを利用 or 自作
• 公開: Vagrantbox.es にて – 公開Boxが安全かどうかは自己責任 » dropboxで公開されているものとかあるし... • 自作: veewee を使う
Vagrant • Vagrantfile – 仮想マシンの設定を行うファイル • ネットワークやGUI表示 etc – Rubyで記述
– Chef連携は、このファイルに記載 • Windowsでは、(今のところ)ここで連携... – Cygwinがあれば、ここでなくても転送できるらしい – 他に良い情報があれば、ぜひ!
Vagrantfile Vagrant.configure("2") do |config| # VagrantBox名 config.vm.box = "hoge" #
knife soloで 使 用 す る SSHの た め の IPア ド レ ス 設 定 config.vm.network :private_network, ip: "192.168.33.10" # Recipeの 実 行 config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "./chef-repo/cookbooks" chef.add_recipe "piyo" end end
3つのツールの連携 • 某おひとりさま環境 – knife-soloで環境準備 – Chef-soloでcookbook準備 – Vagrantで仮想マシンへcookbook転送し 自分がほしい仮想マシンをGet!
• 普通はChefのcookbookのテストとかで使うかと
仮想マシンを手に入れる流れ • 流れの前に – 各ツールのインストールやcookbook, Vagrantfileなどの構築は省略します • 書籍やBlogで数多くあるため
仮想マシンを手に入れる流れ • 1.VagrantBoxを元にした仮想マシン起動 – vagrant up • cookbook適用しないようVagrantfileへ記述 – Chef-soloの準備を先にやらないと、途中で失敗する
仮想マシンを手に入れる流れ • 2.Chef-soloを利用するための準備 – knife solo prepare
[email protected]
-P vagrant
• これでcookbook適用の準備OK
仮想マシンを手に入れる流れ • 3.Chefのcookbook適用のため、再起動 – vagrant reload • vagrant provision でchefのみ動作でもいいけ
れど、念のため • 4.仮想マシンのできあがり!
その他のコマンド • 仮想マシンの停止 – vagrant halt • 仮想マシンが不要なら削除 – vagrant
destroy
というわけで
ある環境のおはなし • ビフォー
ある環境のおはなし • ビフォーアフター
アジェンダ • ある環境のおはなし • Chef-solo, knife-solo, Vagrant • その先へ •
デモ
ある環境のおはなし(再掲) • そのうちに... – あれ、どのVMが最新版だっけ... – そもそも何が入っているっけ... – 手順はどこだっけ...
ある環境のおはなし • そのうちに... – あれ、どのVMが最新版だっけ... 解決 – そもそも何が入っているっけ... 解決 – 手順はどこだっけ...
• インストール・設定順はrecipeでOKだけど、 どのrecipeを使っていたんだっけ... – 微妙な課題 • そこら辺を自動化して履歴をとりたい
そこで Jenkins project - http://jenkins-ci.org/
Jenkins (ジェンキンス) • CI (継続的インテグレーション)ツール • 一般的な環境ではプログラムのビルドや テストの自動化で使う • 某おひとりさま環境では、自動実行と
履歴の保管に使ったりする
Jenkins • 使ってみて良いと感じたところ – 仮想マシンの作成を自動化 • 夜中に放置できる – コマンド実行の履歴が残る •
あとで見返すことができる – Jenkinsのジョブを再度実行すれば、 何回でも同じ仮想マシンが手に入る
Jenkins • どんなふうに使ったか – Chef-solo, knife-solo, Vagrantの実行を PowerShellに記述し、Jenkinsで実行 – そのために、いくつか準備
• PowerShellのセキュリティポリシーを変更 • JenkinsにPowershellプラグインを導入 • Jenkinsの実行ユーザは自分のアカウント • 環境変数を設定 – 「VBOX_USER_HOME」「VAGRANT_HOME」
PowerShellの内容 • タイムスタンプ名のディレクトリを用意 • Gitリポジトリから、clone・copy • Vagrantfile, chefのcookbook – 必要に応じてブランチ指定
– 本当は、“knife solo cook”したい... • Chef-solo, knife-solo, Vagrantを実行 • ジョブの終了をTwilioから電話連絡
PowerShellソース # タイムスタンプのフォルダ作成&移動 $datetime = Get-Date -format yyyyMMddhhmmss cd d:\
mkdir $datetime cd $datetime # ChefのGitリポジトリ(d:\chef-repo)のうち、該当するブランチをクローン git clone -b nseg39 d:\chef-repo # VagrantのGitリポジトリからコピー # *基本的に変更がないので、最新のものをコピーをするという手抜き copy d:\chef-vagrant\Vagrantfile . # VMの起動 cmd /C "vagrant up"
PowerShellソース # Chefの準備 cmd /C "knife solo prepare
[email protected]
-P
vagrant" # VMの再起動とrecipeの実行 cmd /C "vagrant reload" # 仮想環境構築が完了したため、シャットダウン cmd /C "vagrant halt" # 終わったので、Twilioにて連絡 $webRequest = [System.Net.WebRequest]::Create($URL) $webRequest.ContentType = "text/html" $webRequest.ContentLength = 0 $webRequest.Method = "POST" $response = $webRequest.GetResponse()
ご注意 • やりすぎ感があったので、 他の方法があれば、ぜひ教えてください!!
アジェンダ • ある環境のおはなし • Chef-solo, knife-solo, Vagrant • その先へ •
デモ
デモ • Jenkins + PowerShellで以下を実行 – Ubuntuの仮想マシンを作成 – UbuntuにApacheをインストール・起動 –
仮想マシンは一度停止 • VirtualBoxで仮想マシンを起動 • ブラウザにて「It works」を確認
参考文献 • naoyaさんの「入門Chef Solo」 – http://tatsu-zine.com/books/chef-solo • Software Design 2012年10月号
– http://gihyo.jp/magazine/SD/archive/20 12/201210 – 今なら総集編に含まれています • 自分のところ – http://d.hatena.ne.jp/thinkAmi/20130407/1365310673