Windows7でも Chefしたい! 
2014/09/07 
YAMAMOTO, Miyawaki, Tamie
自己紹介 
ه山本民枝(旧姓:宮脇) 
هtwitter : @tami_miyawaki 
هGitHub: miyawaki-cookbooks 
هBlog: http://kiroku-seyo.blog.so-net.ne.jp/ 
ه仕事: 
ه本職は、構築方面のDB屋さん(ほとんど、Oracler) 
هOS (Linux)レイヤ以上のインフラ屋さん(便利屋さんともいう) 
ه資格: 
هOracle Master Gold Oracle Database 11g 
ه大昔にとった、情報処理試験のデータベーススペシャリスト 
ه最近: 
ه2年間、ほとんどOracle Databaseを触ってません 
هもっぱら、LinuxとApacheとTomcatと、ときどきPostgreSQL 
ه遊び道具として、Chef soloを触っていますー 
2
Chefが流行って久しいですが・・・ 
みなさんMac使いのようで、 
Windowsを使った話が少ないです。 
(実際、かなり面倒なことは確かです) 
WindowsでもChef Development Kit(Chef Dk)が登 場し、Chefの環境がかなり楽に作れるようになってきた ので、紹介したいと思います。 
もちろん、ご存知の方は、聞き流してください。 
3
というわけで。 
هWindows7にChef soloの動作環境を作ります。 
هChef Development Kit (ChefDK) 0.2.0.2 
هknife-solo 0.4.2 
هVagrant + VirtualBoxの話はしません。 
ه設定する対象のサーバは、Oracle Linux6.5を 使います。 
هJava8をインストールしてみます。 
ه「Java使い」ではないので、Tomcat8とGitBucketも 入れて動作確認とします。 
4
お約束:Chefとは? 
هサーバ管理自動化の ためのフレームワーク です。 
ه詳しくは、「Chef実践 入門」を読むと幸せに なれると思います。 
5
実行環境: 
作業PC: 
Windows7 
Professional SP1 
64bit VMware ESXi 5.5 
構築サーバ側: 
Oracle Linux 
6.5 x86_ 64 
192.168.1.151 
knife solo コマンド 
Internet 
6
Chefを入れる前に 
Cygwin(ssh, rsync)をインストールしておきます。 
هNetパッケージのsshとrsyncを追加。 
ه環境変数PATHにCygwinのbinディレクトリを追加。 (C:¥cygwin64¥bin) 
プロキシ環境にある人は、設定を忘れずに。 
هDOS> setx http_proxy “http://proxy.hoge.com:8080” 
7
ChefDKをインストールします 
8 
http://downloads.getchef.com/chef-dk/
インストール時の注意点 
هC:¥opscodeにインストールしてください。 
هインストールされるツール 
هChef,Chef-Client, Knife, Ohai, Chef Zero 
هBerkshelf3.0 
هTest Kitchen 
هChefSpec 
هFoodcritic 
9
knife-soloコマンドをインストールする 
هno-user-install:全体のgem環境へ導入を指定 
هignore-dependencies:すでに導入済GEMの導入 を抑制(むやみにコンパイルしてエラーになる) 
DOS> chef gem install knife-solo --no-user-install --ignore-dependencies --no-ri --no-rdoc 
10
Chef-soloの準備をします。 
knifeコマンドを初期化 
Chefのリポジトリ(ディレクトリ)を作成 
11 
DOS> knife configure 
DOS> knife solo init chef-repo
chef-repoのディレクトリ構成 
12 
Berkshelfが管理するCookbook 
自前のCookbook 
サーバごとの定義 
役割ごとの定義
Berkshelf: 
هBerkshelfは、コミュニティ提供のCookbook を管理するツールです。 
ه「Chef実践入門」の記述は、Berkshelf2.x系 についての記述です。 
هしかし、現在は普通にインストールすると、 Berkshelf3.x系なので、注意が必要です。 
13
Berkshelfはインストール済です 
هberkshelfを使うには、 
هchef-repoの下に、Berksfileを作ります。 
هcookbooksディレクトリを削除しておきます。 
هここに、cookbookがダウンロードされます。 
14
Berksfileの中身: 
source "https://supermarket.getchef.com" 
cookbook "java" 
15 
chef-repo¥Berksfile
Berks用の証明書を設定します 
ه以下のURLから証明書をダウンロードします 
هhttp://curl.haxx.se/ca/cacert.pem 
هファイルを以下のファイルとして置きます 
هchef-repo¥.chef¥cacert.pem 
ه証明書ファイル名をSSL_CERT_FILE環境 変数に指定します 
هDOS> set SSL_CERT_FILE=c:¥Users¥hoge¥chef- repo¥.chef¥cacert.pem 
16
javaのCookbookを用意します 
هberksコマンドを実行します。 
هコミュニティ版のjavaのCookbook、および、依存性のある Cookbookをダウンロードします。 
هchef-repo¥cookbooksにjava等のCookbookが用意で きます。 
DOS> berks vendor cookbooks 
17
Oracle Linux側の環境設定 
1.ESXiに、Oracle Linuxをインストールします。 
هCentOS 6.5 x86_64 minimal 
هcentos2ol.shを実行 
2.次のパッケージが導入されていることを確認。 
هrsync、および、curl 
3.インターネットへの接続を確保してください。 
هDNSが設定されている 
هプロキシ環境下では、プロキシが設定されている 
ه~root/.curlrcにproxyを設定してます。 
4.(参考)Vagrantを使うとこの辺りは自動化可能。 
18
サーバにChef soloをインストール 
Windows7からknifesolo コマンドを実行 
DOS> knife solo prepare root@192.168.1.151 
19
「java」cookbookを使うためには 
هjava8を使うには、以下の情報が必要です。 
هダウンロード先のURL(US OTNのサイト) 
هtar.gzファイルのSHA256のハッシュ値 
هサイトにはSHA256の値が掲載されていないので、フ ァイルをダウンロードして算出しました 
20
OTNのサイトからURLを入手 
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 
21
ようやくChefらしく 
هnodesファイルを用意します 
هnodes¥192.168.1.151.json 
هrolesファイルを用意します 
هroles¥git.rb 
هプロビジョニングします 
22
nodes¥192.168.1.151.jsonを書く 
{ "run_list": [ "role[git]" ] 
} 
23
roles¥git.rbを書く 
name = "gitserver" 
override_attributes"iptables" => { "tomcat" => "8080“ }, 
"java" => 
{ "install_flavor" => "oracle", 
"jdk_version"=> 8, 
"java_home"=> "/usr/local/java", 
"oracle" => { "accept_oracle_download_terms" => true }, 
"jdk" => { 
"8" => { 
"x86_64" => { 
“url”=> "http://download.oracle.com/otn-pub/java/jdk/8u20-b26/jdk-8u20- linux-x64.tar.gz", 
"checksum" => "3e717622ae48af5ca7298e7797cb71d4d545238f362741a83e69c097ca055de4" 
} 
} 
} 
}, 
24
roles¥git.rbを書く(つづき) 
"tomcat" => 
{ "version" => 8, 
"download" => { 
"url" => "http://ftp.jaist.ac.jp/pub/apache/tomcat/tomcat-8/v8.0.11/bin/apache- tomcat-8.0.11.tar.gz", 
"chkcum" => "c9feca59e5fc8f40eeacc411328f21c268ed0ca7b4cce259f830736fbf8227d3” 
}, 
"gitbucket" => 
{ "type" => "tomcat", 
"home" => "/var/lib/gitbucket/“ 
} 
# --recipe -- 
run_list"recipe[iptables::iptables]", 
"recipe[java]", 
"recipe[tomcat]", 
"recipe[gitbucket]" 
25
自前でcookbookを書いています 
هsite-cookbooks¥iptables 
ه/ets/sysconfig/iptablesにport filterを追加する だけのcookbook 
هsite-cookbooks¥tomcat 
هtomcatをダウンロードして、CATALINA_HOMEと BASEを分けて設定するだけのcookbook 
هsite-cookbooks¥gitbucket 
هgitbucket.warをダウンロード、設置するcookbook 
ه詳細は、割愛します。 
26
ようやくプロビジョニング(converge) 
Windows7からknife soloコマンドを実行 
DOS> knife solo cook root@192.168.1.151–i秘密鍵 
ه鍵の設定をあらかじめしておいてください(方法は割愛します) 
ه(設定しない場合でも、パスワードを10回入力すれば実行可 能ですが・・・。) 
27
がらがらと、 
Chefsoloが実行されます 
28
GitBucketにアクセスすると・・・ 
http://192.168.1.151 :8080/gitbucket/ 
29
どうやら動いています。 
30
Javaのversionを確認します 
Java8ですね。 
31
以上です。 
32 
ご静聴ありがとうございました。

Windows7でもchefしたい!