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
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
Android CLI
fornewid
0
220
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
180
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
180
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
500
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
660
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
280
5分で問診!Composer セキュリティ健康診断
codmoninc
0
1k
VibeCodingからAgenticWorkflowへ
starfish719
0
490
Foundation Models frameworkで画像分析
ryodeveloper
1
620
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
680
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
200
リアルな遅延を測る仕様
kota_yata
1
110
Featured
See All Featured
Test your architecture with Archunit
thirion
1
2.3k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
660
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
240
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Typedesign – Prime Four
hannesfritz
42
3.1k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
480
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Statistics for Hackers
jakevdp
799
230k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
For a Future-Friendly Web
brad_frost
183
10k
How to Talk to Developers About Accessibility
jct
2
510
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.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