サーバー設定ツール「Chef」をより便利に使うためのテクニック 2ページ

knife-soloのインストールと初期設定

 kinife-soloは、Rubyのパッケージシステムであるgem経由でインストールが可能だ。chefがインストールされている環境であれば、下記のようにしてインストールできる。

# gem install knife-solo

 また、knife-soloはWindows環境でも利用可能だ。Ruby環境が必要となるが、これはWindows向けの「RubyInstaller」というインストーラを利用すると簡単だ。

 RubyInstallerでRubyをインストールしたら、あとはLinuxの場合と同様、gemコマンドでchefパッケージおよびknife-soloパッケージをインストールできる。なお、記事執筆時点のchefパッケージ(バージョン11.6.2)では、依存するパッケージのうちいくつかで最新ではないものが要求されていたため、次のようにバージョンを指定して個別にインストールしている。

> gem install windows-pr -v 1.2.1
> gem install win32-process -v 0.6.5
> gem install mixlib-shellout -v 1.1.0
> gem install chef
> gem install knife-solo

 knife-soloをインストールしたら、続いて「knife configure」コマンドを実行してknifeの初期設定を実行する。

$ knife configure

 ここでは対話式でいくつかの設定が行えるが、すべてデフォルトのままで問題ない。設定が完了するとユーザーのホームディレクトリに.chefディレクトリが作成され、そこに設定内容が記載されたknife.rbというファイルが生成される。続いてこのファイルをテキストエディタで開き、Cookbookが格納されたディレクトリを指定する設定項目を追加しておく。たとえば、「/home/hylom/chef-repo/cookbooks」というディレクトリにCookbooksを格納する場合、以下のような行を追加すれば良い。

cookbook_path ["/home/hylom/chef-repo/cookbooks"]

 なお、Windows環境の場合はパスの区切り文字にWindows標準の「\」(バックスラッシュもしくは円マーク)ではなく、次のように「/」を使用する。

cookbook_path ["C:/Users/hylom/chef-repo/cookbooks"]

 また、knife-soloではSSHおよびrsyncを利用してCookbookなどのコピーを行うので、作業用マシンから設定対象のマシンにSSHでログインできるように設定しておく。このとき、SSHでログインしたユーザーの権限でchef-soloコマンドが実行できる必要がある。今回はrootユーザーでログインしてchef-soloコマンドを実行するようにしているが、rootユーザーでのリモートログインはセキュリティを低下される可能性があるので注意してほしい。

Windows環境にopensshとrsyncをインストールする

 knife-soloは前述の通り、sshやrsyncといったコマンドを利用してCookbookの転送やコマンドの実行を行う。Linux環境ではこれらのツールはデフォルトでインストールされていることが多いが、Windows環境ではChefとは別に用意する必要がある。今回は、Windows向けにUNIX向けツールを提供するMinGW/MSYSというプロジェクトが提供しているsshやrsyncをインストールする方法を紹介しておこう。

 MinGW/MSYSが配布しているツールは、mingw-getというツールでインストールできる。mingw-getのインストーラはSourceForge.JPのダウンロードページからダウンロードできる。ダウンロードページの「リリースファイル一覧」内の「Installer」下にある「mingw-get-setup.exe」がそのインストーラだ。

 このインストーラをダウンロードして実行すると、図4のような画面が表示されるので、ここで「Install」をクリックする、

図4 mingw-getのインストーラ
図4 mingw-getのインストーラ

 インストールが完了すると、MinGW/MSYSで配布されているパッケージのインストールやアンインストールを行える「MinGW Installation Manager」というツールがスタートメニューに追加されるので、これを起動する。MinGW Installation Managerでは左ペインでジャンルを選択すると、右上ペインにパッケージ一覧が表示される。インストールしたいパッケージを右クリックし、「Mark for Installation」を選択するとそのパッケージにチェックが入り、インストールが予約される(図5)。

図5 インストールしたいパッケージを右クリックして「Mark for Installation」を選択する
図5 インストールしたいパッケージを右クリックして「Mark for Installation」を選択する

 今回はOpenSSHおよびrsyncが必要なので、「mysys-openssh」および「mysys-rsync」パッケージをインストールすれば良い。インストールするパッケージを選択したら、「Installation」メニューの「Apply Changes」を選択するとインストール作業を実行できる。

 なお、knife-soloではCygwinというプロジェクトが配布しているrsyncやsshの利用を想定しているため、そのままではパス指定でのエラーが発生する。CygwinとMinGW/MSYSでは、パスの指定方法が若干異なるからだ(CygwinではC:ドライブ以下を参照するのに「/cygdrive/c/」というパスを使うが、MinGW/MSYSでは「/c/」というパスを使う)。この問題を回避するため、MinGW/MSYSのインストール先(デフォルトではC:\MinGW\msys\1.0)以下の/etc/fstabファイルに次のような設定を追記しておく。もしこのファイルがなければ、新規作成して次の内容を記述しておけば良い。

# cygwinを想定しているツール用のHack
#Win32_Path		Mount_Point
c:		/cygdrive/c

 なお、この例ではC:ドライブのみのマッピングを指定しているが、D:ドライブなどほかのドライブもある場合は「d: /cygdrive/d」などのようにそれらのドライブの記述も追加しておこう。

knife-soloを使って設定対象のマシンにChef環境をインストールする

 以上の設定が完了した状態で、設定対象のマシンと設定作業に使用するユーザーを指定して「knife solo prepare」コマンドを実行すると、設定対象のマシンにChefでの環境設定に必要なファイルやツールが自動的にインストールされる。

 たとえば、設定対象のマシンのIPアドレスが「172.17.4.78」で、設定作業に使用するユーザーが「root」の場合、以下のように実行する。

$ knife solo prepare root@172.17.4.78

設定対象のマシンにCookbookを転送して設定作業を実行する

 設定対象のマシンにCookbookを転送して設定作業を実行するには、「knife solo cook」コマンドを使用する。たとえば、Cookbook格納用ディレクトリ内にある「setup-user」というCookbookを「172.17.4.78」というサーバーで実行するには以下のようにする。

$ knife solo cook root@172.17.4.78 -o setup-user

 この場合、その出力は図6のようになる。

図6 「knife solo cook」コマンドでChefによる設定作業を実行した場合の出力
図6 「knife solo cook」コマンドでChefによる設定作業を実行した場合の出力