最近 SoftLayer が結構お気に入り。『SoftLayer といえばベアメタルがすごいんだよねー』という感覚の人が多いのかな。実際自分も触るまでそう思ってたし実際そうなんだけど。
けど、純粋に Virtual Server も結構使いやすいのね。AWS や OpenStack だとサーバのデプロイ時に #cloud-config で始まる cloud-init でいろいろカスタマイズしたりコマンド流したりするんだけど、これ結構ディストリビューションやバージョンよって方言が違ったり、OS の /etc/cloud の状態に左右されたりして辛い。
SoftLayer の場合、Provisioning Script というもので似たようなことができるんだけど、cloud-init とはちょっと違って、任意のスクリプトをダウンロードしてきて実行する、という塩梅なので、方言とか気にせず動くスクリプトをゴリゴリ書けて幸せ感ある。(まぁ cloud-init でも同じ動作させられるけどな。。。)
というわけでこの Provisioning Script で SoftLayer のマシンに一撃で Redmine をデプロイするスクリプトを書いた。ついでにみんな大好きオレオレ証明書の SSL がデフォルト有効じゃ。
やり方
-
SoftLayer のポータル
Devices->Manage->Provisioning Scriptsに以下を登録する

CentOS7.x minimalでデバイス(サーバ)をオーダーするなり、既存のデバイスのOS ReloadをするPost Install Scriptとして上で登録したのを指定するSSH Keysを指定する- 5〜10分くらい待つ
- ブラウザでアクセスする
やっていること
- ファイアウォールを設定する
- ssh のパスワード認証を止める
- SoftLayer では root パスワード有効な状態でデプロイされるのだけど、そのままだとめっさアタック来てヤなので鍵ログインのみにスクリプトで絞ってる
yumで必要そうなパッケージを導入- MariaDB のセットアップ
my.cnf- sha256sum と base64 で日付を捻ったパスワードを生成して
/root/db_password.txtに保管 CREATE DATABASEとGRANTmysql_secure_installation相当の設定 (test データベース消したりリモート root ログイン閉じたり)
gem install bundlerの実施 (システム汚さないよう$HOME/.gem/rubyに入れてる)- Redmine のダウンロードと展開
database.yml,configuration.yml生成- Unicorn 用に
config.ru修正 - Unicorn 用の systemd スクリプトの生成
- Nginx のセットアップ
- el7 用の Nginx を nginx.org から引くための yum repo conf 生成
- Nginx 用に sysctl の修正、再読み込み
- Nginx のインストール
- Nginx の設定流し込み
- オレオレ SSL 証明書の作成
- SoftLayer の API からサーバの fqdn を引いて証明書作成
- Nginx のスタート