Help us understand the problem. What is going on with this article?

knife-soloを導入

More than 5 years have passed since last update.

目的:開発用の環境構築

前回、vagrantで作成した仮想マシンの環境整備
http://qiita.com/astrsk_hori/items/9cc090acf4bbacea5977

インストール

gem install knife-solo

knifeの初期設定

knife configure

全てenterでOK

サードパーティのクックブックを使えるようにユーザ登録

http://community.opscode.com/

登録すると秘密keyが表示されて~/.chef/xxx.pemに保存するようなことが書いてあるのでそのまま従う

秘密keyを設定する

vim ~/.chef/knife.rb
~/.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

作成したリポジトリ

https://github.com/astrsk-hori/chef-dev

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away