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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
210
CSC307 Lecture 17
javiergs
PRO
0
320
Agentic UI
manfredsteyer
PRO
0
120
RTSPクライアントを自作してみた話
simotin13
0
520
Inside Stream API
skrb
1
670
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
180
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
260
AI時代のUIはどこへ行く?その2!
yusukebe
19
6.9k
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
330
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
JavaDoc 再入門
nagise
0
310
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
200
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
21k
Rails Girls Zürich Keynote
gr2m
96
14k
Navigating Weather and Climate Data
rabernat
0
210
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
310
4 Signs Your Business is Dying
shpigford
187
22k
Documentation Writing (for coders)
carmenintech
77
5.4k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Un-Boring Meetings
codingconduct
0
310
Abbi's Birthday
coloredviolet
2
8k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
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