CakePHPで学ぶ継続的インテグレーションのデプロイ先をDigitalOceanに移行する。(1)
「CakePHPで学ぶ継続的インテグレーション」を1ヶ月ぐらい読んでいる。作者のGitHubからVagrantfileやchefのレシピはダウンロードできるので同じ環境をすぐに構築できるのだが、develop、ci、deployの3つの仮想環境を1つのパソコンに構築するのは、パフォーマンス的にきつい。それに将来サービスとしてリリースするのにローカルにデプロイするのも雰囲気がでないのでデプロイの環境をサーバーへ移そうと思いDigitalOceanというサービスを利用することに決めた。AWSでもいいのだが値段を比較すると使っていないときは料金がかからないのでお得です。
アカウントは以前作成していたのでクレジットカードの登録から始まる。すごい簡単でクレジットカードの登録をしてtokenを取得すれば、あとはVagrantfileに必要項目を書いておけば好きな仮想OSが利用できる。
クレジットカードの登録
もちろんDigitalOceanのWebサイトからも仮想OSのタイプやサーバーのスペックを選択することも可能で、SAKURA VPSに近い。環境を手軽に新規で作成したり、必要なくなったら壊したりするのには自動化させたい。そこでWebサイトからマウス使ってOS選択したりSSHの設定したりするのは面倒くさいので、Vagrantfileというファイルに、その辺の情報を記入しておければVagrantが提供するコマンドからDigitalOcean上に仮想OSを作成したり、削除したりすることができる。sakura vpsを利用していた時は一々ホームページ上でOSの再インストールをマウスを使って月額固定で料金を支払っていたのだが、DigitalOceanだと初期設定(OSやサービス利用情報)はVagrantfileに書いておき、コマンドでOSの再インストールやOSアンインストールが操作できるので必要ないときは金がかからないのがよい。サービスとしてリリースする場合は常に動かさなくてはいけないのだが、勉強目的には丁度いいよね。
OSをアンインストールするということは、インストールした環境を捨てるということになるのだが、Vagrantはchefと連携が可能でVagrant起動時にchef経由で環境構築を自動化することができる。chefというのは今までコマンドでインストールしていたPHPやApache、ユーザー作成や権限なんかをレシピという設定ファイルに書いておくと環境構築を自動化することができる。
Vagrantのインストール
サイトからダウンロードしてダブルクリックすればインストール完了。自分はユーザーディレクトリにdegitalOceanというディレクトリを作成して、そこにVagrantfileを入れてる。
cd ~ mkdir degitalOcean touch Vagrantfile
VagrantにDigitalOceanのプラグインをインストール
vagrant plugin install vagrant-digitalocean ; vagrant plugin list ;
Vagrantfile
②ホスト名を指定する。
管理画面でこんな感じで表示されます。複数運営する場合にわかりやすい名前をつけておくといい。
③token
これは管理画面で作成する。Personal Access Tokensからtokenを生成する。ReadとWriteにチェックを付けるのを忘れずに。tokenは1回しか表示されないので注意すること。
URL
https://cloud.digitalocean.com/settings/applications
⑤リージョン
日本に近いシンガポールを選択。
⑥タイプ
まずは料金の確認。自分は1ヶ月5ドルの512MBタイプを選択した。
Vagrantfileには、provider.size = '512mb'を指定する。
Vagrantfile
Vagrant.configure('2') do |config| config.vm.provider :digital_ocean do |provider, override| override.ssh.private_key_path = '~/.ssh/id_rsa' override.vm.box = 'digital_ocean' override.vm.box_url = "https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box" override.vm.hostname = 'deploy' provider.token = '管理画面で作ったのをコピペする' provider.image = 'ubuntu-14-04-x64' provider.region = 'sgp1' provider.size = '512mb' end end
VagrantからDigitalOcean上に仮想OSを作成する。
vagrant up --provider=digital_ocean
コマンド実行後、少し時間がかかります。エラーがなければ管理画面に行きSSHの設定や仮想OSがインストールされているか確認できる。
SSHでログイン
vagrant ssh Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-43-generic x86_64) * Documentation: https://help.ubuntu.com/ System information as of Sat Jan 17 08:10:37 EST 2015 System load: 0.18 Processes: 77 Usage of /: 11.2% of 19.56GB Users logged in: 0 Memory usage: 11% IP address for eth0: 128.199.190.86 Swap usage: 0% IP address for eth1: 10.130.161.208 Graph this data and manage this system at: https://landscape.canonical.com/ 0 packages can be updated. 0 updates are security updates. root@deploy:~#
仮想OSを終了
vagrant halt ==> default: Powering off the droplet...
管理画面を見ると停止になってます。
仮想OSをアンインストール
vagrant destroy default: Are you sure you want to destroy the 'default' VM? [y/N] y ==> default: Destroying the droplet...
管理画面を見ると、インストールされた仮想OSはありません。
CakePHPで学ぶ継続的インテグレーションのデプロイ先をDigitalOceanに移行する。(2) - araiyusuke’s blog