LoginSignup
0
0

More than 5 years have passed since last update.

Azure + VagrantでUbuntu14.04を起動するまで

Posted at

はじめに

他のサービスもそうだけど、APIどんどんアップデートされていき、ググったブログの設定が使えなくなっているので、2016/08/15現在のvagrant-azureの設定をさらしておく。

準備

以下の準備は終わっていることを前提とします

  • vagrantと、vagrant-azure-pluginのインストール
    • vagrant dotenv pluginのインストールも必要です
$ vagrant plugin install vagrant-azure dotenv
  • azureアカウントの作成
  • azure-cliのインストールとセットアップ
    • 設定のためのファイルをダウンロードし、サブスクリプションをセットアップする必要があります

インストール方法は以下のサイトで紹介されているので、参考してセットアップしましょう。

その後、azure-cliで以下の情報を取得しておきます

  • azure.pemのダウンロード
$ azure account cert export -f azure.pem
  • azureイメージIDの検索と決定
    • 下記のコマンドで、Ubuntu14.04のイメージを探します。できるだけ日付が最新のものが良いでしょう。
$ azure vm image list | grep Ubuntu
  • azureアクセス用の秘密鍵
    • RSA鍵だとうまくいきません。以下で作っておきます
$ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout azure.key -out azure-cert.pem

Vagrantfileの作成

現状、Vagrantがきちんと立ち上がる設定は以下のとおり

# -*- mode: ruby -*-
# vi: set ft=ruby :

Dotenv.load

ENV['VAGRANT_DEFAULT_PROVIDER'] = "virtualbox"
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.provider :azure do |provider, override|
      provider.subscription_id      = "#{ENV['AZURE_SUBSCRIPTION_ID']}"
      provider.mgmt_certificate     = "#{ENV['AZURE_MGMT_CERTIFICATE']}"
      provider.mgmt_endpoint        = 'https://management.core.windows.net/'
      # vm settings
      provider.vm_image             = "#{ENV['AZURE_VM_IMAGE']}"
      provider.vm_name              = "#{ENV['AZURE_VM_NAME']}"
      provider.vm_size              = "#{ENV['AZURE_VM_SIZE']}"
      provider.vm_user              = "#{ENV['AZURE_SSH_USERNAME']}"
      provider.vm_location          = "#{ENV['AZURE_VM_LOCATION']}"
      provider.cloud_service_name   = "#{ENV['AZURE_CLOUD_SERVICE_NAME']}"
      provider.storage_acct_name    = "#{ENV['AZURE_STORAGE_ACCNT_NAME']}"

      override.ssh.username         = "#{ENV['AZURE_SSH_USERNAME']}"
      override.ssh.private_key_path = "#{ENV['AZURE_SSH_PRIVATE_KEY_PATH']}"
      override.vm.box               = "#{ENV['AZURE_VM_BOX_NAME']}"
  end
end

ロードする.envファイルの設定は以下のとおりです。

AZURE_SUBSCRIPTION_ID = "<Azureのポータルから取得できます>"
AZURE_MGMT_CERTIFICATE = "azure.pem" # さっき作ったやつ
AZURE_SSH_PRIVATE_KEY_PATH = "azure.key" # opensslコマンドで作ったやつ
AZURE_VM_IMAGE = “<azure vm image listで探したやつ>”
AZURE_VM_NAME = “<任意の名前をつけましょう>”
AZURE_VM_SIZE = "Small" # これまでのブログ設定ではエラーになることが多いです。エラーメッセージから正式なサイズを拾いましょう
AZURE_VM_LOCATION = "Japan East" # 適当に
AZURE_VM_BOX_NAME = “<任意の名前をつけましょう>”
AZURE_SSH_USERNAME = "ubuntu" # AWSなど他のサービスと併用する場合はubuntuにしておくと便利(デフォルトはvagrant)
AZURE_CLOUD_SERVICE_NAME = “<任意の名前をつけましょう>”
AZURE_STORAGE_ACCNT_NAME = “<英単語のみ。スペースや’-’, ‘_’はダメです>”

上記、#以降はコメントなので、実際に.envファイルを編集するときは削除して下さい。作成するときの注意点は以下のとおりです。

  • provider.storrage_acct_nameはオプショナルですが、入れないと際限なくStorageアカウントを量産し、しかも消せません。必ず設定したほうが良いです
    • 現状、azure cliを使うとアカウント内部のストレージそのものは面倒な手続きの後、消すことができます
  • override.ssh.private_key_pathはssh_keygenで作ったRSA鍵がなぜか使えません。前述のopensslで作ったものを使いましょう。また、private_key_pathはオプショナルなはずですが、vm_passwordか、private_key_fileはどちらかは必須であるとエラーになるので、かならず設定しましょう(逆に言えば、パスワードを設定することでも通ります)

制約事項

  • 上記で、仮想マシンは作れますが、この状態だと、22番ポートしか通りません。必要に応じて、provider.tcp_endpoints = ’80:80’などを設定して、ポートを通す必要があると思われます(ポータルから設定したため、未確認)

参考

以下のマスターのドキュメントが1番、答えに近いです(検索するとv2.0のドキュメントが出てきますので、masterに切り替えましょう)

0
0
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
0
0