VagrantでAzureにもデプロイできるみたいなので、やってみました。
Vagrantを実行する環境もAzureに作って、この仮想マシンからAzureにデプロイしてみようと思います。
Vagrantについて、詳しく知りたい方はこちらのドキュメントをご覧ください。
■Vagrant日本語ドキュメント
http://lab.raqda.com/vagrant/index.html
また、VagrantのAzureのPlug-inは、こちらをご覧ください。
■MSOpenTech/vagrant-azure
https://github.com/MSOpenTech/vagrant-azure
今回の手順では、Azure上にUbuntu Server 14.04 LTSの仮想マシンを作成し、ここにVagrantを作成します。
なれてくれば、大体15~20分くらいで、デプロイができる環境ができます。
また、単純にデプロイをする環境でしたら、Azure CLIは不要なのですが、Vagrantfileを作成する上でCLIで確認することもあるので、今回の手順ではインストールする手順としています。
大きな流れは、下記の通りとなります。
1.Azure 仮想マシンに、Ubuntu Server 14.04LTSをインストールする。
2.Azure CLIのインストール
3.Vagrantのインストール
4.Vagrantfileの作成
5.実行と削除
1.Azure 仮想マシンに、Ubuntu Server 14.04LTSをインストールする。
Azure管理ポータルから、Ubuntu Server 14.04 LTSをインストールします。
他のバージョンでもいいのですが、自分はこのバージョンで検証しました。
この手順は、画面より単純にポチポチするだけなので、割愛します。
もし、ここで何かを気にするのでしたら、仮想マシンの料金くらいでしょう。
自分は、検証する際は、D1インスタンスを使うことが多いです。というのも、A2インスタンスとD1インスタンスなら、そんなに料金が変わらないからです。
CPUをすごく使うような場合は、A2の方が早いかもしれないですけど、ディスクIOであればD1のSSDのインスタンスを使った方が早いような気がしますね。
■仮想マシン(Linux)の料金
http://azure.microsoft.com/ja-jp/pricing/details/virtual-machines/#Linux
2.Azure CLIのインストール
冒頭でも触れましたが、なくても大丈夫らしいです。
ですが、Vagrantfileを作る時には、あった方が便利です。
Azure CLIをインストールするためには、npmが必要ですので、まずはこちらをインストールします。
インストールするコマンドは、下記です。
sudo apt-get update sudo apt-get install nodejs-legacy sudo apt-get install npm
※ sudo apt-get updateをやっておかないと、npmのインストールでエラーがでました。
自分が検証した時にインストールされたバージョンは、下記の通りです。
$ node -v v0.10.37 $ npm -v 1.4.28
続いて、下記コマンドを実行してAzure CLIのインストールします。
sudo npm install azure-cli --global
CLIをインストールした後は、Azureの管理用の接続設定を行います。
まずは、下記URLより管理証明書をダウンロードします。
ダウンロード後は、Ubuntu Serverへ管理証明書をUploadし、下記のコマンドでインポートします。
azure account import hogehoge-mm-dd-yyyy-credentials.publishsettings
試しに、下記のコマンドを実行してみると、作業中のUbuntu Server が動いていてることが確認できます。
azure vm list
3.Vagrantのインストール
では、本題となるVagrantをインストールします。
「sudo apt-get install vagrant」でもインストールできるのですが、それでインストールできるバージョンが、1.4.0で、vagrant-azureのインストール要件が、Vagrant 1.6.0以上なのでそのままだと満たすことができなく、インストールエラーとなったので、下記の手順としました。
wget https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.2_x86_64.deb sudo dpkg -i vagrant_1.7.2_x86_64.deb vagrant plugin install vagrant-azure
インストール後に、vargrant –versionでバージョン確認を行うと、当然1.7.2と応答があります。
4.Vagrantfileの作成
自分の作成したVagrantfile(公開できる範囲で)は、下記になります。
ちなみに、作成したのは/home/azureuser/vagrant-test/になります。
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'azure' Vagrant.configure('2') do |config| config.vm.provider :azure do |azure| azure.subscription_id = '(サブスクリプションID)' azure.mgmt_certificate = '/home/azureuser/vagrant-test/azure.pem' azure.mgmt_endpoint = 'https://management.core.windows.net/' # vm settings azure.vm_image = 'b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu_DAILY_BUILD-trusty-14_04_2_LTS-amd64-server-20150416.2-en-us-30GB' azure.vm_location = 'Japan East' azure.vm_size = 'Small' azure.vm_name = 'y0demovg01' azure.cloud_service_name = 'y0demovg01' azure.ssh_private_key_file = '/home/azureuser/.ssh/azure.key' azure.ssh_certificate_file = '/home/azureuser/.ssh/azure-cert.pem' end config.ssh.private_key_path = '/home/azureuser/.ssh/azure.key' config.vm.box = 'azure' config.vm.box_url = 'https://github.com/msopentech/vagrant-azure/raw/master/dummy.box' end
設定内容は、下記のような感じで取得してください。
(1).subscription_idの設定
サブスクリプションIDの設定です。
下記のコマンドで取得した、サブスクリプションIDを設定します。
azure account list
下記のような応答がありますので、サブスクリプションIDの箇所をVagrantに設定してください。
info: Executing command account list data: Name Id Current data: -------- ------------------------------------ ------- data: (名前) (サブスクリプションID) true info: account list command OK
(2).mgmt_certificateの設定
Azureに仮想マシンを作成するために必要な管理証明書の設定です。
VagrantFileと同じフォルダに、下記のコマンドを実行して、「azure.pem」を作成しました。
azure account cert export -f azure.pem
(3).vm_image
Azureの仮想マシンを作成する際のイメージの設定です。
下記のコマンドを使って、イメージの名称を選択しました。
※ 量が多いので、UbuntuでGrep
azure vm image list | grep Ubuntu
ついでの、デプロイ先のデータセンターの名称は、下記のコマンドで取得できます。
azure vm location list
(4).ssh_private_key_fileとssh_certificate_fileの設定
Vagrantで作成する仮想マシンもUbuntuにしましたので、接続用のSSHの設定です。
下記のコマンドで作成します。
※ 途中で、ユーザ応答が必要ですが、そこは省略してますが、割と適当で大丈夫そうです。
cd /home/azureuser/.ssh openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout azure.key -out azure-cert.pem ※ 上記のコマンド実行後、色々応答を求められます。 chmod 600 azure.key cat >> ~/.ssh/config <<EOB Host *.cloudapp.net User azureuser IdentityFile $HOME/.ssh/azure.key EOB
5..実行と削除
実行
vagrant up
SSHで接続
vagrant ssh
削除
vagrant destroy
まとめ
Vagrantは、デプロイのとこまでやってくれます。
これに、chefやansibleを合わせて使ってプロビジョニングをするのもとても面白そう。
そこまでいけば、スケジュールで、ピーク時間帯はスケールアウトして、そこが終わったらスケールインするとか、柔軟な環境構築ができるようになるので、面白い設計ができそうですよね。
コメント