最近 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
とGRANT
mysql_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 のスタート