Chef solo users cookbook
/etc/passwd
と /etc/shadow
を管理する users クックブックを利用します。
http://community.opscode.com/cookbooks/users
環境
使い方
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 ロールで管理しているけど、これでいいんだろうか。あと話題になっているわりには公式ドキュメント、海外エントリが主な情報源になっていて ぐぬぬ... な感じです。