64
61

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vagrant と Azure で使い捨て開発環境をさくっと作る

Last updated at Posted at 2014-04-04

Azure には コマンドラインツール が用意されていて、Vagrant 経由でなくても簡単にサーバを作って消してができる。けれども Vagrant を使うと chef とか ansible とかもろもろ使ってプロビジョニングまで一気通貫で出来るので、大変便利になる。

0. 準備

Azure のアカウントを作る

http://azure.microsoft.com/ からポチポチっと。

Vagrant をインストールする

http://www.vagrantup.com/downloads.html からダウンロードして、これまたポチポチっと。

azure-cli のインストール

これは無くても何とかなるんだけど、準備するのに便利なので入れておく。
インストール方法は http://qiita.com/zakkied/items/d94ff3845ee098a2c5e2 など。

1. vagrant-azure plugin をインストールする

% vagrant plugin install vagrant-azure

ソースコードからインストールするときはこんな感じ:

% git clone https://github.com/MSOpenTech/vagrant-azure.git
% cd vagrant-azure
% bundle install --path=vendor/bundle
% bundle exec rake build
% vagrant plugin install pkg/vagrant-azure-1.0.0.gem

2. Vagrantfile を作る

# vi: set ft=ruby :

ENV['VAGRANT_DEFAULT_PROVIDER'] = 'azure'

Vagrant.configure('2') do |config|

  config.vm.provider :azure do |provider, override|
    provider.subscription_id      = 'abcdefgh-1234-5678-9abc-d123456789ab'
    provider.mgmt_certificate     = '/Users/zakkie/azure-api/azure.pem'
    provider.mgmt_endpoint        = 'https://management.core.windows.net/'

    # vm settings
    provider.vm_image             = 
      'b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-13_10-amd64-server-20140226-en-us-30GB'
    provider.vm_location          = 'Japan East'
    provider.vm_size              = 'Small'
    provider.vm_name              = 'zakkie-test014'
    provider.cloud_service_name   = 'zakkie-test014'
    provider.ssh_private_key_file = '/Users/zakkie/.ssh/azure.key'
    provider.ssh_certificate_file = '/Users/zakkie/.ssh/azure-cert.pem'

    override.ssh.private_key_path = '/Users/zakkie/.ssh/azure.key'
    override.vm.box               = 'azure'
    override.vm.box_url           = 'https://github.com/msopentech/vagrant-azure/raw/master/dummy.box'
  end
end

それぞれ必要なパラメータは azure コマンドから求めることができる:

subscription_id, mgmt_endpoint

% azure config list
info:    Getting config settings
data:    Setting       Value                               
data:    ------------  ------------------------------------
data:    endpoint      https://management.core.windows.net/
data:    subscription  abcdefgh-1234-5678-9abc-d123456789ab

mgmt_certificate

% azure account cert export -f azure.pem

で証明書ファイルが保存される。

vm_image

% azure vm image list

から選択。

vm_location

azure vm location list

から選択。

vm_size

これは取れないっぽい。help にあるのがそれっぽいかも。

% azure vm create -h
(snip)
help:          extrasmall, small, medium, large, extralarge, a5, a6, a7

ただし、先頭を大文字にする必要がある。

vm_name, cloud_service_name

Azure内での VM の識別子 (vm_name) と DNS 名 (<cloud_service_name>.cloudapp.net)。同じである必要はないけど、揃えておいたほうが無難。

ssh_private_key_file, ssh_certificate_file, private_key_path

http://qiita.com/zakkied/items/d94ff3845ee098a2c5e2#1-2 のように鍵ファイルを作成。

さあ使ってみよう

起動

% vagrant up

Small, Japan West で 210 秒くらいかかった

SSH ログイン

% vagrant ssh

停止

% vagrant halt

VM 削除

停止しただけだと課金は継続するので、使い終わったら必ず削除する。
また、バグなのか、ストレージだけ残ることがあったので、WebUI からも念のため削除されたことを確認しておいたほうが良さそう。

% vagrant destroy

Ansible を使ったプロビジョニング

chef でもいいけど、Ansible の方が簡単なので。

Vagrantfile に provision を追加する。

Vagrant.configure('2') do |config|
  config.vm.provision 'ansible' do |ansible|                                       
    ansible.playbook = "provisioning/playbook.yaml"                                
  end

  config.vm.provider :azure do |provider, override|
  ...
provisioning/playbook.yaml
- hosts: all
  sudo: yes
  tasks:
    - command: /usr/bin/apt-get update
    - command: /usr/bin/apt-get -y upgrade
    - name: install basic packages
      apt: pkg={{ item }} state=latest
      with_items:
        - git
        - erlang
        - nodejs
        - npm

vagrant up --provision とすると playbook.yaml が VM の起動後に反映される。つまり VM を作り直しても、毎回同じ状態から使いはじめることができる。つまりつまり、構築した VM を削除しても、惜しくもなんともない。つまりつまりつまり、簡単に使い捨ての環境を構築できるようになった。

なお、VM が起動済みの場合は vagrant provision でよい。

(追記1)

ansible は vagrant を実行しているホストから実行するので、ansible をインストールしておく必要があった。

% pip install ansible

(追記2)

VM として windows を構築する 手順をまとめた。

64
61
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
61

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?