Chefでユーザーを作成してみる

Vagrantの仮想マシンにChefを実行するための準備をする
の続き

Chefでユーザーを作成してみる。

【参考】
アルパカchef日記3日目 data bagについて / またはユーザ管理クックブックなど - アルパカDiary
http://d.hatena.ne.jp/toritori0318/20130516/1368722444

準備

Cookbookを作成する。

$ cd chef-repoのディレクトリ
$ knife cookbook create adduser -o site-cookbooks

パスワードはshadow passwordというものを設定する必要があるとの事なので、生成する。

$ openssl passwd -1 'パスワード'
シャドーなパスワードの文字列

レシピ作成

レシピを記述する。

$ vi site-cookbooks/adduser/recipes/default.rb
user "hoge" do
  password "シャドーなパスワードの文字列"
  supports :manage_home => true
  action :create
end

group "wheel" do
  action [:modify]
  members ["hoge"]
  append true
end

上記のレシピでは、ユーザーの作成だけでなく、wheelグループにもついでに追加している。
今回利用したCentOSのBOXでは、/etc/sudoersの最後に

%wheel ALL=NOPASSWD: ALL

が追加されているので、
wheelグループにユーザーを追加するだけで、sudoがパスワード無しで実行できるようになる。

適用

nodesのjsonを下記のように修正する。

$ vi nodes/centos.json
{
  "run_list": [
    "recipe[adduser]"
  ]
}

料理する。

$ knife solo cook centos

結果

ログインして、作成したユーザーに切り替えられるか確認する。

$ ssh centos
centos$ su hoge

sudoもパスワードなしで実行できる

centos$ sudo echo Hello, world!
Hello, world!