Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
おひとりさま環境での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
690
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
巨大モノリシックアプリ モダン化大作戦
ktcryomm
0
900
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
510
Heart of Swift Concurrency
koher
0
260
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
290
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2k
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
150
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
140
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
120
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
5
1.6k
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
470
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
440
信頼性の目標を誰も求めてない
shubox
0
500
Featured
See All Featured
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Ruling the World: When Life Gets Gamed
codingconduct
0
330
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
190
Navigating Team Friction
lara
192
16k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.8k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.2k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
The Limits of Empathy - UXLibs8
cassininazir
1
650
So, you think you're a good person
axbom
PRO
2
2.1k
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