vagrant使わずにchef-soloを覚えるまでのまとめ

はじめに

「このコマンド、サーバーで実行するの?それともローカル?」
chef-soloを覚えるまでに一番困ったことです。

chef-soloの資料はvagrant前提で書かれていることが多く、vagrantが初めてだと、覚えることが多すぎるのが要因の一つではないかと思います。

私の場合、本来、サーバー側で流すべきコマンドを共有フォルダがあるがゆえにローカルで実行していたことに気づくまで時間がかかりました。
理解してしまえば何てこと無いんですが、初めてだとたいしたことが無くても結構ハマってしまうんですよね。

なるべく混乱を避けchef-soloに絞るため、vagrantを使わず、実機を用意した上でローカルで行う行程なのか、サーバーで行う行程なのかを明記してみました。

目標

成功体験をするために最低限に絞ります。

  1. vimをインストールする
  2. 外部のリポジトリを追加する

環境

この資料は次の環境で実践した結果をもとに作成されました。

環境OS
ローカルMac OS X 10.9 Mavericks
サーバーCent OS 6.2 x86_64

サーバーを用意する

サーバー側でやることは

  • SSHでログインできる状態にする
  • パスワード無しでsudoが実行できるユーザーを作る

の二点だけです。

今回はGMO Cloud Publicのテンプレートから「CentOS 6.2 x64 xen」を利用してサーバーを立てました。

[サーバー]作業用ユーザーの追加

パスワード無しでsudoできるようにする。

[サーバー]公開鍵周りのファイル生成

ここまででサーバー側の処理は一旦終了。

[ローカル]のSSH設定

[ローカル]サーバーへ鍵を転送

鍵の生成周りは割愛します。

ここまでで来たら、以下のコマンドのみでサーバーにログインできれば準備完了です。

ここでパスワードを聞かれたら公開鍵認証が失敗していますので、ssh周りの設定を見直してください。

[ローカル]ruby周りのパッケージを整理

RubyGemsの更新

rbenvとruby-buildをインストール

rbenvのPATHを通す

Shellがzshだったら

Shellがbashだったら

[ローカル]chefとknife-soloのインストール

色々聞かれますが全部EnterでOK

[ローカル]chef-soloをリモートインストールする

ローカルからサーバーに対してchef-soloをリモートインストールします

[ローカル]homeディレクトリにリポジトリを作る

リポジトリを生成します。
作業用フォルダはコマンド打ち込みやすいのでhome直下にします。

次に、site-cookbookにレシピを生成。

レシピにvim-enhancedをインストールするよう記載

これでvimをインストールするだけのレシピが完成。
ただ、このままだとknife-soloを実行しても何も起きません。

testserverに対して「どのレシピを実行するか」をノードに記載する必要があります。

knife-soloでtestserverに対してレシピを実行(cook)する

[サーバー]vimがインストールされたか確認

vimのクレジットが表示されたら成功

[ローカル]yumのepelリポジトリ有効化

gitで管理されており、コミット済みなのが前提条件らしいので、とりあえずコミットする

yumのクックブックを取得

ノードを書き換えてepelリポジトリを有効化

もう一度レシピを実行する

ここは結果出る間で少し長いですので少々お待ちを。

[サーバー]リポジトリが追加されているか確認

以下のようにepelが見つかれば成功

ここまでで目標達成です。
無事に成功したら、自分オリジナルのレシピを作ってみてください。