目的:開発用の環境構築
前回、vagrantで作成した仮想マシンの環境整備
http://qiita.com/astrsk_hori/items/9cc090acf4bbacea5977
インストール
gem install knife-solo
knifeの初期設定
knife configure
全てenterでOK
サードパーティのクックブックを使えるようにユーザ登録
登録すると秘密keyが表示されて~/.chef/xxx.pem
に保存するようなことが書いてあるのでそのまま従う
秘密keyを設定する
vim ~/.chef/knife.rb
client_key 'Users/hoge/.chef/xxx.pem'
上記に先ほどユーザ登録して作ったファイルを指定する
cookbooks用のリポジトリを作成
cd work-dir
knife solo init chef-repo
git管理しておく
cd chef-repo
git init
git add -A
git commit
サードパーティのクックブックを管理するのにberkshelf
を使う
berkshelfを使うほうがかなり楽になる。自分でgitからcloneしてレシピ取得とかしなくて済むので。
gem install berkshelf
試しにmysql、git、nginx、vim
をインストールできるように設定。
vim Berksfile
berks init
vim berksfile
site :opscode
cookbook 'mysql'
cookbook 'git'
cookbook 'nginx'
cookbook 'vim'
coockbook 作成(レシピ取得)
berks install --path cookbooks
インストール対象HOSTにインストール
knife solo prepare centos63
上記ではvagrantで作成した仮想環境にcentos63という名前をつけてる。
vagrantで作成した仮想環境ならそのまま名前を変更すればできると思うけど一応、sshでパス無しログイン出来る必要があるのでその状況になってない場合はsshの設定を行うこと。
インストール対象を設定
対象サーバにインストールするcookbookを設定する。
vim nodes/centos63.json
{"run_list":[
"recipe[git]"
]}
試しにgitのみインストールしてみる。
knife solo cook centos63
~/chef/chef-repo (master ✘)✭ ᐅ knife solo cook centos63
Running Chef on centos63...
Checking Chef version...
WARNING: Berkshelf could not be loaded
WARNING: Please add the berkshelf gem to your Gemfile or install it manually with `gem install berkshelf`
Uploading the kitchen...
Generating solo config...
Running Chef...
Starting Chef Client, version 11.8.2
Compiling Cookbooks...
Converging 1 resources
Recipe: git::default
* package[git] action install
- install version 1.7.1-3.el6_4.1 of package git
Chef Client finished, 1 resources updated
~/chef/chef-repo (master ✘)✭ ᐅ ssh centos63
[vagrant@localhost ~]$ git
usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
[-p|--paginate|--no-pager] [--no-replace-objects]
[--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
[--help] COMMAND [ARGS]
リモートホストにgitがインストールされたことが確認できた。
今度はvimを入れてみる。
まずgitの時に貼り忘れたのでvimがインストールされていないことを確認
~/chef/chef-repo (master ✘)✭ ᐅ ssh centos63
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ vim
-bash: vim: コマンドが見つかりません
[vagrant@localhost ~]$ which vim
/usr/bin/which: no vim in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
先ほどのインストールリストnodes/centos63.json
を修正
{"run_list":[
"recipe[git]",
"recipe[vim]"
]}
再度、インストール実行
knife solo cook centos63
確認
~/chef/chef-repo (master ✘)✭ ᐅ ssh centos63
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ vim
[vagrant@localhost ~]$ which vim
/usr/bin/vim
最終的に以下をインストールした
~/chef/chef-repo (master ✘)✹ ᐅ cat Berksfile
site :opscode
cookbook 'mysql'
cookbook 'git'
cookbook 'nginx'
cookbook 'vim'
cookbook 'zsh'
cookbook 'rvm', git:'https://github.com/fnichol/chef-rvm.git'
cookbook 'yum'
~/chef/chef-repo (master ✘)✹ ᐅ cat nodes/centos63.json
{
"rvm": {
"rubies" : ["ruby-1.9.3"],
"default_ruby" : "ruby-1.9.3-p484"
},
"mysql": {
"server_root_password": "password",
"server_repl_password": "password",
"server_debian_password": "password"
},
"nginx":{
"port" : 80
},
"run_list":[
"recipe[yum-epel]",
"recipe[rvm::system]",
"recipe[mysql::server]",
"recipe[git]",
"recipe[zsh]",
"recipe[vim]"
]
}
初期から入ってるyumではrvmインストールできなくてハマった。
これはyum-epel
をインストールして正常にインストールできるようになった。
rvmのバージョンをググりながら見てたページのコピペでエラー発生してハマった。
。
rvm list known
rvmで使えるバージョンをチェックして修正したらうまくいった
今回はサードパーティのcookbooksのみでインストールしてみました。
まとめ
Berksfileに欲しいcookbookを追加。
追加後にberks install --path cookbooks」
レシピを取得したらリモートホストにインストール
knife solo cook centos63
作成したリポジトリ