Chef-solo+knife-solo+Vagrantでサーバ構築を自動化してみる - その2 sudoers
さて、前回に引き続き、
今日はsudoersをいじってみようと思います。
※環境は前回と同じです。
今回までのコードは、以下においてあります。
今回の流れ
- Berksfileをいじる
- berks install
- jsonファイルで設定を書く
- サーバに適用する
今日はシンプル。
Berksfileをいじる
まずは、Berksfileってなやねん、と。
Berkshelfっていうツールで使う、依存関係を定義するファイルっぽい。
サードパーティのcookbookをBundler風に扱う事ができるツールらしいです。
Berkshelf
Chef Soloの正しい始め方 | tsuchikazu blog
chef - Berkshelfを試してみる - Qiita [キータ]
基本的にはopscodeから取ってくるみたいですが、
githubのURLを直接指定することもできます。
今回はopscodeのやつを使います。
Berksfile
site :opscode cookbook 'sudo'
berks install
前回のbundle install
時にberks
コマンドも一緒にインストールされているはず。
なので、そのまま叩きます。
$ bundle exec berks install --path cookbooks Using sudo (2.1.4)
jsonファイルで設定を書く
前回同様、nodes/chef-test.json
に設定を書きます。
どんなパラメータがあるのかは、
opscode-cookbooks/sudo · GitHub
この辺を見ると良いかと。
今回は、前回作成したユーザーをsudoersに入れたいので、以下のようにしました。
{ "users": [ { "name": "yagi", "group": "deploy"}, { "name": "deploy", "group": "deploy"} ], "authorization": { "sudo": { "groups": ["vagrant", "deploy"], "users": ["vagrant", "deploy", "yagi"], "passwordless": true, "sudoers_defaults": [ "env_reset", "mail_badpass", "secure_path=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"" ] } }, "run_list":[ "recipe[users]", "recipe[sudo]" ] }
※sudoers_defaultはubuntuのデフォルトがそんな感じで設定されてたので、合わせました。
追加、ではなく、まるっと書き換えるので、vagrantのデフォルトユーザーも入れておきました。
サーバに適用する
それでは、実行してみましょう。
$ bundle exec knife solo cook chef-test
OK。では、サーバに入って確認。
(実際はログで差分が見れているはずですが)
$ ssh chef-test $ sudo visudo # This file is managed by Chef. # Do NOT modify this file directly. Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # User privilege specification root ALL=(ALL) ALL vagrant ALL=(ALL) NOPASSWD:ALL deploy ALL=(ALL) NOPASSWD:ALL yagi ALL=(ALL) NOPASSWD:ALL # Members of the sysadmin group may gain root privileges %sysadmin ALL=(ALL) NOPASSWD:ALL # Members of the group 'vagrant' may gain root privileges %vagrant ALL=(ALL) NOPASSWD:ALL # Members of the group 'deploy' may gain root privileges %deploy ALL=(ALL) NOPASSWD:ALL
今回はパスワードなしでsudoできるようにしたので、こんな感じになりました。
ちゃんとvagrantユーザーもsudoできてます。
まとめ
めんどくさがり&あるものを使う派なので、サードパーティのcookbookを使ってみました。
次回は、chefの入門でよく見るnginxのインストールをやりたいと思います。