今まで自宅サーバやさくらのVPSでのサーバのセットアップはEvernoteにメモを書いていたけど、Chef Soloを使い始めてセットアップメモのほとんどを粛々とChefのレシピに書き直してる。最近はRaspberry Pi(Raspbian)の設定更新もChef Soloでやってた。
これまではセットアップ済みのマシンをChef Soloで設定更新する運用が中心だった。Vagrant環境ではある程度構築はしてるけど、VagrantのBoxはChefを始められるくらいの設定はしてあるので本当に1からというと少し違う。企業だと最低限のセットアップをしたOSイメージから始めたりするだろうし。
自前のISOイメージを作るのも面倒だし、さくらのVPSでカスタムOSインストールからChef Soloを始めるまでの最低限のセットアップしたことを参考までに備忘録として残しておく。
1. カスタムOSインストール
さくらのVPSでカスタムOSインストールでDebianを選ぶとVNCクライアントが起動しインストーラ画面が表示される。
カスタムインストールを実行する前にさくらのVPSのネットワーク設定が表示されるのでメモしておく。IPアドレス、ネットマスク、ゲートウェイ、ネームサーバ1あたり。
- キーボード設定 (Japanese)
- ネットワーク設定
- ルートパスワードの設定
- 初期ユーザ名、パスワード設定
- パーティション設定
All files in one partition (recommended for new users)
この辺はさっさと終わる。Linuxのインストールもずいぶんと楽になったものだ。
インストールが終わったらVPSコントロールパネルからサーバを起動する。(なぜかインストール後に仮想マシンが起動していなかった)
sshのインストール
VPSコントロールパネルからリモートコンソール(VNCクライアント)を起動する。リモートコンソールでログイン後 su
コマンドでルートになる。VNCクライアントから使い慣れたターミナルを使いたいのでまずsshをインストールする。
apt-get install ssh
vimのインストール
sshをインストールしたら取り急ぎパスワード認証を使って、ターミナルなど使い慣れたクライアントでリモート接続する。
ログイン後 su
コマンドでルートになり、まず設定ファイルの編集のため vim
を入れる(nanoに慣れてなくて効率が悪いので)。
apt-get install vim
update-alternatives --set editor /usr/bin/vim.tiny
sudoのセットアップ
Chefの実行のためsudoをパスワードなしで実行できるようにする。
apt-get install sudo
visudo
# -> username ALL=(ALL:ALL) NOPASSWD:ALL # を追加する
鍵設定
Chef Solo(knife-solo)からパスワード無しでリモート接続するため、ローカルマシンの公開鍵をauthorized_keys
に追記する。
exit
でrootからユーザに戻って以下を実行。
cd ~
mkdir .ssh
touch .ssh/authorized_keys
chmod 0700 .ssh
chmod 0600 .ssh/authorized_keys
vi .ssh/authorized_keys
# -> ローカルの公開鍵( ~/.ssh/id_rsa.pub など)を書く
ポート変更などsshの細かい設定すらもすぐにChef Soloでセットアップするのでここまでが最低限のセットアップ。
感想
vimの設定は余計にしてもここまではChefで設定できないので手動でやるしかない。メモってしまえば大したことのない内容な感じ。設定を間違えてリモートログインできなくなるとまたVNCコンソールに頼らないといけなくなるのでChef Soloでsshやネットワーク周りを設定するときは必ずsshのログインを接続した状態にしておく。
余談
Chefのレシピも公開したいところだけど、アンチパターンにある巨大リポジトリを作ってしまっていて、sshd_configやら.sshやらhosts_allowやら見せたくない設定があって公開が難しい。細かくcookbookに分離すればいいのだけど面倒でやっていない。
何か見せたくないファイルのフィルタやテキストの置換などを使って別のGitリポジトリかGistかを作成できないだろうか。Gruntのタスクを駆使すればできそうだが、こんな特殊な需要を持っているのは自分だけかな。