読者です 読者をやめる 読者になる 読者になる

Apacheをchef経由でインストールできるようにする

運用管理ツール?「Chef」をいろいろ使ってみますの続きです。
Apacheをchef経由でインストールできるとこまでがんばりたいです。

復習

前回やったとこは、以下のことです。

  • Chef-Clientをインストール
  • Chef-Serverをインストール
  • Chef-Serverを動かしてChef-Server-Webuiから動作できることを確認
  • COOKBOOKのサンプルを作る
  • Roleのサンプルを作る

なので以下のコマンドをうつと結果がかえってきます。

$ knife role show example
{
  "name": "example",
  "description": "Example role for the chef repository",
  "json_class": "Chef::Role",
  "default_attributes": {
  },
  "override_attributes": {
  },
  "chef_type": "role",
  "run_list": [
    "recipe[zsh]",
    "recipe[screen]",
    "recipe[git]"
   ]
}

nodeにrun_listを追加する

どうもこのままではchef-clientを実行しても実行されないようです。
なのでnodeにrun_listを追加してみます。

$ chef-client
#=> Node sptross1 has an empty run listと出力される
$ knife node list #=> nodeの確認
[
 "sptoss1"
]
$ knife node show sptoss1 -r #=> nodeのrun_list一覧確認
{
  "run_list": [
  ]
}
$ knife node run_list add sptoss1 "role[example]"
{
  "run_list": [
    "role[example]"
  ]
}
$ chef-client
#=> ERROR発生

とりあえずchef-clientが何かできるようになったようです。

nodeからrun_listを削除

一回run_listを消してみます。これはただのテストというか試してみたいだけです。

$ knife node run_list remove sptoss1 role[example]
{
  "run_list": [
  ]
}

いちいちjsonを返してくれるあたりが素敵です。

nodeの作成/削除

knifeコマンドが気になって仕方がなくなってきたのでnodeの作成/削除もテストしておきます。

$ knife node create pochi --editor=emacs
#=> nodeの設定ファイルが開くのでデフォルトのまま保存
Created(or updated) node[pochi]
$ knife node list
[
  "sptoss1",
  "pochi",
]
$ knife node delete pochi
#=> 確認コンフォームが出てくるので"y"を入力
Deleted node[sysmngra]!
$ knife node list
[
  "sptoss1"
] 

knifeコマンドマスタ

  • knife node list
    • nodeの一覧を返す
  • knife node show #{node_name} [OPTIONS]
    • node_nameで指定したnodeの情報を返す
    • -rオプションを利用するとrun_listのみ返す
  • knife node run_list remove #{node_name} #{role_name}
    • node_name内のrole_nameをrun_listから削除する
  • knife node create #{node_name} [OPTIONS]
    • node_nameで指定したnodeを新しく作成する
    • 環境変数にEDITORを指定していない場合optionに"--editor=emacs"などつけないとエラーがおこる
  • kinfe node delete #{node_name}
    • nodeを削除する
  • knife node edit #{node_name} [OPTIONS]
    • nodeの設定ファイルを編集する。
    • 環境変数にEDITORを指定していない場合optionに"--editor=emacs"などつけないとエラーがおこる
  • knife role list
    • roleの一覧を返す
  • knife role create #{role_name} [OPTIONS]
    • node_nameで指定したnodeを新しく作成する
    • 環境変数にEDITORを指定していない場合optionに"--editor=emacs"などつけないとエラーがおこる
  • knife role delete #{role_name}
    • role_nameで指定したroleを削除する
  • knife role show #{role_name} [OPTIONS]
    • role_nameで指定したroleの詳細を返す
  • knife role edit #{role_name} [OPTIONS]
    • role_nameで指定したroleを編集する
    • 環境変数にEDITORを指定していない場合optionに"--editor=emacs"などつけないとエラーがおこる
  • knife cookbook list
    • cookbookの一覧を返す
    • uploadしてないCOOKBOOKは表示されない(管理対象でない)
  • knife cookbook show #{cook_book} [OPTIONS]
    • cook_bookで指定した情報を返してくれる。何もOPTIONを指定しないと多分cook_bookのバージョンしかでない
    • バージョンを指定すると結構細かい情報が返される。
    • バージョン指定かつJSONのキーを指定するとそれに対応した値をかえす
  • knife cookbook create #{cook_book}
    • cook_bookで指定したCOOKBOOKを作成する
  • knife cookbook upload -o #{cook_book_dir}
    • OPTION: -s => chef-serverのURL
    • OPTION: -u => ユーザを指定
    • OPTION: -o => COOKBOOKのディレクトリ
    • OPTION: -a => 対象ディレクトリ以下全てのCOOKBOOKを登録する
  • knife cookbook delete #{cook_book} VERSION
    • cook_bookで指定されたcookbookを削除する
    • -yオプションつけると確認聞かれない