こんにちは。@jedipunkz です。 今回は Opscode Chef でユーザ・グループを作成する方法をまとめます。
‘users’ Cookbook を使います。
% cd ${YOUR_CHEF_REPO}
% ${EDITOR} Berksfile
cookbook 'users'
% berks install --path ./cookbooks
data_bag を使ってユーザ・グループの管理をしたいので管理ディレクトリを作成しま す。
% mkdir -p data_bags/users
data_bags/users/jedipunkz.json ファイルを作成します。必要に応じて内容を書き換えてください。
{
"id": "jedipunkz",
"ssh_keys": "ssh-rsa AAAABx92tstses jedipunkz@somewhere",
"groups": [ "sysadmin", "sudo" ],
"uid": 2001,
"shell": "\/usr\/bin\/zsh",
"comment": "jedipunkz sysadmin",
"password": "$1$s%H8BMHlB$7s3h30y9IB1SklftZXYhvssJ"
}
json ファイルの説明です。
- id : ユーザ名
- ssh_keys : SSH 公開鍵
- groups : 所属させるグループ
- uid : unix id
- sheell : ログインシェル
- comment : コメント
- passwd : ハッシュ化したパスワード
特にハッシュ化したパスワードは下記のコマンドで生成出来ます。
% openssl passwd -1 'yourPassword'
data_bag を作成し json ファイルを読み込みます。
% knife data bag create users
% knife data bag from file users data_bags/users/jedipunkz.json
現在 (2013/05/18 現在) 、’users’ Cookbook に不具合があるらしく groups に記した グループにユーザが所属してくれませんでした。なので下記の対処をします。 sysadmins.rb を今回は利用します。このファイルに下記の行を追記します。僕は sudo グループに所属させたかったので (先ほど groups: に記した) こうしましたが、他の グループが良ければ変更してください。また、Ubuntu Server を扱うことがメインの僕 なので group_id は 27 にしています。適宜変更してください。
% ${EDITOR} cookbooks/users/recipes/sysadmins.rb
# 下記の行を追記
users_manage "sudo" do
group_id 27
end
cookbook を Chef サーバにアップロードします。
% knife cookbook upload users
適用したいノードの run_list に Recipe ‘users::sysadmins’ を追加します。
% knife node run_list add ${YOUR_NODE_NAME} users::sysadmins
chef-client の次回実行時にユーザ ‘jedipunkz’ が作成されているはずです。SSH で ログインして確認してみてください。待ちきれなかったら knife ssh して chef-client を実行してください。
この ‘users’ cookbook は他の Cookbook からも呼び出して利用することが出来るので 応用が利きますね。