Chef knife-solo 環境構築

knife-soloとは・・・・?
knife-soloとは、ChefをChef Solo環境で利用するためにユーリティリティツールで、
knife-soloを使うと、手元で作ったクックブックをリモートのサーバに転送して
chef-soloコマンドを実行するといった一連の作業を自動化できる。
knife-soloはRubyGemsとして公開されており、gemでインストール可能。
そのため、はじめにrubyとgemのインストールを行う。

1. Rubyのインストールに必要なライブラリをインストール
* コンパイルコマンドを含めzip解凍などに必要なライブラリをインストールする。
yum install gcc zip unzip zlib zlib-devel openssl openssl-devel


2. Rubyをインストール
gemがyumで入手できる ruby のバージョンに対応していないので、
  公式サイトから最新版を入手してソースからコンパイル&インストールを行う。

* ruby の公式ページに行って最新版をダウンロード。
https://www.ruby-lang.org/ja/downloads/

* この時点では、2.5.0が最新版(安定版)なのでこちらを使う。
mkdir works
cd works
wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz --no-check-certificate
tar zxvf ruby-2.5.0.tar.gz
cd ruby-2.5.0

./configure
make; make install

* Rubyがインストールされたことを確認
ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

 

3. Rubyにzlibとopensslを組み込む
rubyをソースからインストールしてchefをインストールしようとすると
  zlibやopenssl まわりのエラーが出てしまうので、
  rubyのソースディレクトリから zlib のライブラリを作っておく。
cd ext/zlib
ruby extconf.rb
make; make install

* つぎに同じくソースディレクトリからopensslのライブラリをつくる。
  同様の流れでmakeを行うと以下のエラーが出てしまう。
「No rule to make target `/thread_native.h」
  元々のMakefileにtop_srcdirの記述が足りないことが原因のため、
  以下コマンドを実行することでopensslのライブラリをつくる。
cd ext/openssl
ruby extconf.rb
sed -i -e "1i top_srcdir = $(cd ../.. && pwd)" Makefile
make; make install

sed の 「$(cd ../.. && pwd)」という部分は、
 rubyのソースディレクトリを指定しておけばOK。

 

4. chefdkインストール
* chefdkインストール(chefコマンドを使えるようにしておく)
wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.7.0-1.el6.x86_64.rpm
rpm -ivh chefdk-0.7.0-1.el6.x86_64.rpm

 

5. knife-solo/Berkshelfをインストール
* knife-soloをインストール
gem install knife-solo

* knife-soloは、他のgemのインストール有無によってデフォルトのオプションが変化するため、クックブックの依存関係を管理するBerkshelfをインストールしておく。
gem install berkshelf

 

6. knife-soloでリポジトリを作成
knife-soloでChefリポジトリの新規作成を行うことができるか確認しておく。
mkdir chef-repo
cd chef-repo
knife solo init .

※Chefに必要な各種ファイルとディレクトが展開されたらOK