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
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
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
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
170
Are APIs Still Relevant in the AI Era?
soyuka
0
450
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
580
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.1k
wkhtmltopdfの次どうするか問題2026
willnet
2
1.9k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
560
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
720
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
460
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
パーソナライズPodcastを作った話
repunit11
0
130
phperだってパンチカードでコーディングしたい
o0h
PRO
0
280
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
630
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
30 Presentation Tips
portentint
PRO
1
430
Product Roadmaps are Hard
iamctodd
55
13k
Code Reviewing Like a Champion
maltzj
529
40k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
470
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
560
Being A Developer After 40
akosma
92
590k
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