Chefを使ってみる - 導入編

#概要#
Chef-solo、Knife-soloをインストールして、スタンドアロン構成でクックブックの作成練習。
OS:CentOS6.5 (64bit)

#作業のながれ#
[Ruby/gemインストール](http://qiita.com/naoto-yoshida/items/51bba0a67addcea9f1f2#rybygem%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
　↓
[Chef-soloインストール](http://qiita.com/naoto-yoshida/items/51bba0a67addcea9f1f2#chef-solo%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
　↓
[Gitインストール](http://qiita.com/naoto-yoshida/items/51bba0a67addcea9f1f2#git%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
　↓
[レポジトリ設定](http://qiita.com/naoto-yoshida/items/51bba0a67addcea9f1f2#%E3%83%AC%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E8%A8%AD%E5%AE%9A)
　↓
[クックブックなどを準備](http://qiita.com/naoto-yoshida/items/21e199c3a63499b64092#nginx%E7%94%A8%E3%81%AB%E3%82%AF%E3%83%83%E3%82%AF%E3%83%96%E3%83%83%E3%82%AF%E3%81%AA%E3%81%A9%E3%82%92%E6%BA%96%E5%82%99)
　↓
[リモートサーバへデプロイ実施](http://qiita.com/naoto-yoshida/items/21e199c3a63499b64092#%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%82%B5%E3%83%BC%E3%83%90%E3%81%B8%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E5%AE%9F%E6%96%BD)

#Ruby/gemインストール#
1. 前提パッケージをインストール
<pre>
# yum -y install gcc zlib zlib-devel openssl openssl-devel
</pre>
2. rubyの最新ソースをダウンロードする
<pre>
# curl -O http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.gz
</pre>
3. ソースを展開し、コンパイル
<pre>
# tar zxvf ruby-2.1.5.tar.gz
# cd ruby-2.1.5
# ./configure
# make
# make install
</pre>
4. バージョン確認（実際に実行するユーザで確認）
<pre>
$ ruby -v
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux]
</pre>
5. gemをダウンロードする
<pre>
# curl -O http://production.cf.rubygems.org/rubygems/rubygems-2.4.4.tgz
</pre>
6. 解凍してセットアップ
<pre>
# tar zxvf rubygems-2.4.4.tgz
# cd rubygems-2.4.4
# ruby setup.rb
</pre>

#Chef-soloインストール#
1. Chef-Soloインストール
<pre>
\# curl -L https://www.opscode.com/chef/install.sh | bash
 :
warning: /tmp/install.sh.1116/chef-11.16.4-1.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Preparing...                ########################################### [100%]
   1:chef                   ########################################### [100%]
Thank you for installing Chef!
</pre>

2. cher-soloのバージョン確認
<pre>
$ chef-solo -v
Chef: 11.16.4
</pre>

3. chef Development Kitインストール
<pre>
\# curl -O https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.3.5-1.x86_64.rpm
\# rpm -ivh chefdk-0.3.5-1.x86_64.rpm
Preparing...                ########################################### [100%]
   1:chefdk                 ########################################### [100%]
Thank you for installing Chef Development Kit!
</pre>

4. chef Development Kitバージョン確認（berksがインストールされていることを確認）
<pre>
$ berks version
3.2.1
</pre>

5. knife-soloインストール
<pre>
\# gem install knife-solo
 :
Done installing documentation for plist, method_source, slop, coderay, pry, rack, libyajl2, ffi, ffi-yajl, hashie, mixlib-log, chef-zero, diff-lcs, erubis, highline, net-ssh, net-ssh-gateway, net-ssh-multi, mime-types, rest-client, wmi-lite, ipaddress, mixlib-shellout, mixlib-config, mixlib-cli, systemu, ohai, mixlib-authentication, chef, knife-solo after 76 seconds
30 gems installed
</pre>

6. knife-soloの初期設定
<pre>
$ knife configure
</pre>
~/.chef/knife.rbというknifeの設定ファイルが保存される。
configure中色々聞かれるが全て無視。

#Gitをインストール#
1. Epel設定
<pre>
\# rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
\# sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/epel.repo
</pre>

2. gitインストール
<pre>
\# yum installl --enablerepo=epel git
</pre>

3. GitHUBへ公開鍵を登録

4. .ssh/configを修正
<pre>
$ cat ~/.ssh/config
Host github.com                     <-接続先を指定
    IdentityFile ~/.ssh/hogeho.pem      <-秘密鍵を指定
</pre>

#レポジトリ設定#
1. Git初期設定実施
<pre>
$ git config --global user.name "username"
$ git config --global user.email "mailadres@hogehoge.com"
$ git config --global color.ui auto
</pre>

2. Chef用のディレクトリを作成
<pre>
$ knife solo init chef-repo
</pre>

3. ディレクトリへ移動し、コマンド実行
<pre>
$ cd chef-repo
$ git init
Initialized empty Git repository in /workspace/git_repo/myself/.git/
</pre>

4. READMEファイルを作成し、コミット
<pre>
$ touch README.md
$ git add README.md
$ git commit -m "First Commit"
</pre>

5. Gitのプロジェクトを指定し、pushする
<pre>
$ git remote add origin git@github.com:hogehoge/fugafuga.git
$ git push -u origin master
</pre>