humangas's blog

自分の振り返りを適当に書いてます。書きっぷりはそん時の気分によって変わります。

入門Chef Solo:07-サードパーティのChefクックブックを使いたい

入門Chef Solo - Infrastructure as Code

入門Chef Solo - Infrastructure as Code

Opsccode Community

ココにサードパーティChefクックブックが集積されている。knifeコマンドを使って公開されているクックブックを簡単にインポートできる。

事前の設定

Opscode Communityにユーザー登録する

Opscode CommunityのサイトからSign Upを行う

秘密鍵を取得する

ユーザー設定画面から"Get a new private key"を選択して秘密鍵をダウンロードする。

  • ダウンロードした秘密鍵の保存場所(例):~/.chef/[username].pem
  • パーミッション:600

knifeの設定

~/.chef/knife.rb

client_key
'/Users/[username]/.chef/[username].pem'
cookbook_path [ './cookbooks' ]

例:yumのEPELをyumクックブックで有効にする

OpsCode Communityのクックブックはknifeコマンドで取得する。

前提:

  • Chefレポジトリがgitで管理されていること
  • ワーキングディレクトリがクリーンな状態(コミットしていない変更がない状態)であること

Chefレポジトリの準備

$ cd chef-repo
$ git init
$ git add .
$ git commit -m `blah blah`

knifeでyumクックブックを取得する

次のコマンドでcookbooksディレクトリ以下にyumクックブックをダウンロードし、git addからgit commitまで自動実行する。

$ knife cookbook site vendor yum

クックブックを実行する

JSONファイルのrun_listに"yum::epel"を設定してChef Soloを実行する。

JSONファイル:

{
    "run_list":[
        "yum::epel"
    ]
}

実行結果の確認

$ vagrant ssh
$ yum repolist
...
epel Extra Packages for Enterprise Linux
8,425

自分で書くかサードパーティのものを使うか

  • ポリシー次第
  • 理想的な動作が保証されているわけではない
  • 十分に利用できるレベルにある
  • 汎用性をあげるためにしっかりと書かれているものが多い
  • 利用範囲を限定して自分で書いた方がわかりやすい
  • 筆者はサードパーティをほとんど使っていない

考察:

  • プライベートや開発でちょっと使いたいときはサードパーティも楽でよさそう
  • エンタープライズの仕事をするときは自分で書いた方がよさそう
  • 自分で書くときに参考のために読むのはよさそう