Vagranでさくらのクラウドにデプロイ「Vagrant Sakura Provider」レビュー
最近は開発環境にVagrantを使っている方が多くなっています。Windowsはもちろん、Mac OSXでもサーバと同じ環境を作るのは大変ですが、Vagrantを使えば1台構成ながらもLinuxディストリビューションが動作する環境を構築できます。
しかしローカルで開発して、それをサーバにデプロイするというのは面倒な作業です。最近ではそのための仕組みも充実してきましたが、FTPでアップロードするくらいの感覚でVagrant + さくらのクラウドを組み合わせてくれるのがVagrant Sakura Providerになります。
必要なもの
Vagrant Sakura Providerのインストール
Vagrantプラグインとしてインストールをします。コマンド一つで簡単にできます。
$ vagrant plugin install vagrant-sakura Installing the 'vagrant-sakura' plugin. This can take a few minutes... Installed the plugin 'vagrant-sakura (0.0.7)'!
なお、必須ライブラリのnokogiriのバージョンが合わなくてインストールに失敗する場合があります。その場合は次のように指定することでインストールできるようになります。
# 予め [sudo] gem install nokogiri -v '1.6.6.2' を実行しておきます。 $ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 vagrant plugin install vagrant-sakura
Vagrantfileの用意
プロジェクトのフォルダを作成し、Vagrantの設定ファイルVagrantfileを下記のように作成します。
$ cat Vagrantfile Vagrant.configure("2") do |config| config.vm.box = "dummy" config.ssh.username = "ubuntu" config.vm.provider :sakura do |sakura| sakura.access_token = 'AAAAAAAAAAAAAAAAAAAAAAAA' sakura.access_token_secret = 'BBBBBBBBBBBBBBBBBBBBBBBBBBBBB' sakura.use_insecure_key = true end end
アクセストークンおよびシークレットはさくらのクラウドの管理画面より取得してください。
そしてダミーの仮想マシンボックスを追加します。
$ vagrant box add dummy https://github.com/tsahara/vagrant-sakura/raw/master/dummy.box
これで準備完了です。
Vagrant Sakura Providerの実行
では実際に使ってみます。デフォルトではプロジェクトのフォルダが /vagrant に展開されます。なので例えばwwwというディレクトリを作成した場合は、 /vagrant/www と解釈されます。
wwwディレクトリを作成したら、
$ vagrant up --provider=sakura
を実行します。
$ vagrant up --provider=sakura Bringing machine 'default' up with 'sakura' provider... ==> default: Creating a server with the following settings... ==> default: -- Server Name: default ==> default: -- Server Plan: 1001 ==> default: -- Disk Plan: 4 ==> default: -- Disk Source Archive: 112500459149 ==> default: Disk 112600997552 is migrating (0/20480) : ==> default: Disk 112600997552 is migrating (20224/20480) ==> default: Waiting for SSH to become available... ==> default: Server is booted and ready for use! TLD but no host_name given. No patterns will be configured. vagrant-dns: trying to stop process with pid 33825... vagrant-dns: process with pid 33825 successfully stopped. ==> default: Restarted DNS Service ==> default: Rsyncing folder: /path_to_vagrant/ => /vagrant
このようにさくらのクラウド上にサーバが展開されます。デフォルトは Ubuntu 12.04.2LTS-server 64bit となっています。Ubuntuはデフォルトユーザがubuntuになりますので、 config.ssh.username = "ubuntu"
にてSSHログインする際のユーザ名を指定します。
立ち上がったサーバにログインする場合はいつものVagrantと同じく vagrant ssh
でできます。
$ vagrant ssh Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic x86_64) * Documentation: https://help.ubuntu.com/ System information as of Fri Dec 19 09:43:07 JST 2014 System load: 0.14 Processes: 75 Usage of /: 5.2% of 17.73GB Users logged in: 0 Memory usage: 4% IP address for eth0: 153.120.17.86 Swap usage: 0% Graph this data and manage this system at https://landscape.canonical.com/ 50 packages can be updated. 15 updates are security updates. New release '14.04.1 LTS' available. Run 'do-release-upgrade' to upgrade to it. $ ls /vagrant www
といった具合にプロジェクトのディレクトリ以下が自動的に同期されます。
さらにファイルを編集したら、provisionコマンドで同期できます。
$ vagrant provision ==> default: Rsyncing folder: /path_to_vagrant => /vagrant
サーバのOSやCPU/メモリの組み合わせは sakura-list-id コマンドで取得できますので、数字を設定ファイルに書き込むだけです。
$ vagrant sakura-list-id Zone: is1a ---- Archives ---- ID Size Name 112600898109 20GB CentOS 5.11 64bit (基本セット) 112600915795 20GB CentOS 6.6 64bit (基本セット) : 112600051011 100GB Windows Server 2008 R2 for RDS 112600051958 100GB Windows Server 2008 R2 for RDS(MS Office付) ---- Server Plans ---- ID Name 1001 プラン/1Core-1GB 2001 プラン/1Core-2GB : 96012 プラン/12Core-96GB 128012 プラン/12Core-128GB
Chefも使えます
Vagrantなので、Chefなどのprovisionerを使うこともできます。なおサーバ上でChefを使う際には vagrant-omnibus を使ってサーバ上にChefをインストールする必要があるようです。
ネットワークには非対応
config.vm.network を使ったネットワーク設定には未対応となっていますのでご注意ください。
開発時にはローカルの仮想マシン、運用時はさくらのクラウドと切り替えて使うのにとても便利そうです。複数台をまとめて管理したり、CIのような自動化は難しいかも知れませんが、ちょっとしたWebサービスを素早く開発、デプロイするのにはぴったりではないでしょうか。