今回も長くなりそうですが、頑張っていきましょう。
前回、初期化した仮想環境を立ち上げましょう。

目標を確認

最初に設定した目標を確認します。

  • rootパスワードの変更
  • SSH接続の設定変更
  • sudoの設定
  • 一般ユーザーの追加
  • システムのアップデート
  • iptablesの設定
  • WEBサーバーの設定
  • WEBページの設定
  • マルチドメインの設定
  • PHPの設定
  • MySQLの設定
  • Postfix/Dovecot/Postfix Adminの設定

userを作成する

ユーザー関係のrecipeを作りたいと思います。
この辺りは、まとめてできそうですね。

  • rootパスワードの変更
  • 一般ユーザーの追加

rootパスワードの変更

usersというCookbookを作成します。

rootユーザーのパスワードを変更してみましょう。

~/vagrantdir/sakuravps/chef-repo/site-cookbooks/users/recipes/default.rb

XXXXXXXXの部分にパスワードを入れていけば良いはずですが、このままでは、上手くいきません
パスワードをハッシュ化しないとエラーになります。
コマンドラインで、パスワードを作成します。

ハッシュ化したパスワードをrecipeに書きます。

~/vagrantdir/sakuravps/chef-repo/site-cookbooks/users/recipes/default.rb

一般ユーザーの追加

ユーザーの追加は、複数のrecipeに使われることが多いので、recipeをまたがることができるdata_bagを使用すると便利です。

~/vagrantdir/sakuravps/chef-repo/data_bags

accountディレクトリを追加し、jsonファイルを追加します。
idは要素は、データを見つけるために必須です。

パスワードは、先ほどのように、コマンドラインでを作成します。

~/vagrantdir/sakuravps/chef-repo/data_bags/account/webmaster.json

今回は一つだけですが、ファイルを増やすだけで、ユーザー追加できるように、配列で処理します。
data_bagを使うと、その中のディレクトリのファイルを読み込むことができます。

~/vagrantdir/sakuravps/chef-repo/site-cookbooks/users/recipes/default.rb

wheelというグループをsudo(root権限でコマンドが実行できる)にしようと考えているので、webmasterをwheelに追加します。

~/vagrantdir/sakuravps/chef-repo/site-cookbooks/users/recipes/default.rb

recipeをノードに追加します。
前回、追加したtestbookは、もう使わないので消します。

~/vagrantdir/sakuravps/chef-repo/nodes/sakuravps.json

それでは確認してみましょう。

と書いても良いですが、まとめて行うコマンドでも良いでしょう。

ログインして、確認できれば、完了です。

SSH接続の設定

SSHのポートは、デフォルトのままにしておくと、狙われる可能性が非常に高いので、変更します。
また、の設定を行い、少しでもセキュリティを上げます。

  • SSH接続の設定変更

sshというCookbookを作成します。

設定ファイルのダウンロード

仮想環境にログインし、以下のファイルをダウンロードします。
ついでに、日本語の設定をしようと思うので、こちらもダウンロードします。

/etc/ssh/sshd_config
/etc/sysconfig/i18n

Vagrantを使用しているので、/vagrantにファイルをコピーすると、

~/vagrantdir/sakuravps

にファイルが同期されます。

そのファイルを以下の場所に移動させ、erbという拡張子にします。

~/vagrantdir/sakuravps/chef-repo/site-cookbooks/ssh/templates/default

設定ファイルを変更

設定ファイルを変更します。

~/vagrantdir/sakuravps/chef-repo/site-cookbooks/ssh/templates/default/i18n.erb

#Port 22の部分を探し、適当な数字に変更すれば良いのですが、テンプレートでは変数が使えるので、それを使用します。
また、SSHからrootログインを無効、公開鍵認証にする設定を入れます。

~/vagrantdir/sakuravps/chef-repo/site-cookbooks/ssh/templates/default/sshd_config.erb

鍵の作成

ユーザー名パスワードでログインできてしまうと、不正ログインされやすくなるので、の設定をします。

鍵の作成には、WinSCPについているPuTTY Key Generatorを使用しました。
私の環境ではインストール済みだったことと、準備ができたあとWinSCPで操作するのが楽なので、こちらにしました。

WinSCP プロジェクト日本語トップページ – SourceForge.JP

PuTTYの実行

インストールが完了したら、

C:\Program Files\WinSCP\PuTTY\puttygen.exe

を実行します。

以下の画像のように設定し、Generateボタンを押します。
マウスを動かすと、ゲージが上がっていきます。

cygwin-chef-sakura3_01

以下の赤枠部分をコピーし、authorized_keys.erbというファイル名で、sshd_config.erbなど同じ場所に置きます。

cygwin-chef-sakura3_02

その後、Kye passphraseComfirm passphraseに適当なパスワードを入力し、Save private keyボタンを押して、WinSCPで使う鍵を保存します。

~/id_rsa.ppk

メニューのConversionsからExport OpenSSH Kyeを選んで、CygwinからSSHする時に使う鍵を保存しましょう。

~/id_rsa_open.ppk

という感じに保存します。

Cygwinで使う鍵のパーミッションは、以下のように変更しておきましょう。

recipe

以下のようにrecipeを書きました。

ここでは、templateでファイルをアップします。
変数を使用しないファイルは、cookbook_fileでも構いません。

sakuravps.jsonに追加するのを、忘れないようにしましょう。
また、上記で設定した変数は、こちらで定義することができます。

~/vagrantdir/sakuravps/chef-repo/nodes/sakuravps.json

これらのrecipeを反映し、ログインしてみましょう。

長くなったので、続きは次回!