Chef solo users cookbook

/etc/passwd/etc/shadow を管理する users クックブックを利用します。

http://community.opscode.com/cookbooks/users

環境

  • Ubuntu 12.04 LTS
  • Ruby 2.0.0p0
  • Gems
    • berkshelf (2.0.0.beta)
    • knife-solo (0.3.0.pre5)
    • chef (11.4.4)

使い方

Berksfile には chef-solo-search, users を追記します。 chef-solo-search は Chef solo でローカルの data-bag を検索するようにするクックブックです。

cookbook "chef-solo-search"
cookbook "users"

ユーザ情報を格納した data_bag を作成します。data_bags/users/<user-id>.json

password は以下のコマンドで生成します。

% openssl passwd -1 "plaintextpassword"
{
    "id": "<user-id>",
    "password": "<passowrd>",
    "ssh_keys": [
        "ssh-rsa AAAA..."
    ],
    "groups": ["sysadmin"],
    "uid": 1000,
    "shell": "\/bin\/bash"
}

users クックブックは全ノードで利用するので、共通利用する site-cookbooks/common を生成します。

% knife cookbook create common -o site-cookbooks

common クックブックの recipes/default.rb で users クックブックの users_manage LWRP を利用します。

include_recipe 'users'

users_manage 'sysadmin' do
  group_id 2300
  action [:remove, :create]
end

users, chef-solo-search を common クックブック metadata.rb の depends に指定します。

depends 'chef-solo-search'
depends 'users'

common クックブックを適切な Role または Node の run_list に追加してください。

まとめ

ざっくり手順をまとめました。細かいところはドキュメントを参照してください。

Chef 難しすぎる気がします。自分だけの利用で足りる簡単なクックブックを作成して構成管理するのはまだ簡単でシンプルに済ませることができたけど、 Berkshelf などを用いた外部のクックブックを利用しようとするとそのクックブックの利用方法を理解するだけでしんどいです。

今のところは基本的な users, openssh, sudo クックブックなどは外部のものを使用しています。全ノード対象な設定は common クックブックに書いて、 base ロールで管理しているけど、これでいいんだろうか。あと話題になっているわりには公式ドキュメント、海外エントリが主な情報源になっていて ぐぬぬ... な感じです。