Ansible をつかって Azure 上で仮想マシンをブートアップするところまでの手順。
Microsoft Azure 側の準備
- Azure アカウント(割愛:https://azure.microsoft.com/ja-jp/get-started/)
- Azure CLI インストール
- ストレージアカウント
- 管理証明書
Azure CLI インストール
これがあると便利なので入れておく。
インストール(Ubuntu 14.04 の場合)
$ sudo apt-get install nodejs-legacy
$ sudo apt-get install npm
$ sudo npm install -g azure-cli
npm http GET https://registry.npmjs.org/azure-cli
npm http 200 https://registry.npmjs.org/azure-cli
(略)
/usr/local/bin/azure -> /usr/local/lib/node_modules/azure-cli/bin/azure
azure-cli@0.9.9 /usr/local/lib/node_modules/azure-cli
$ azure help
info: Executing command help
info: _ _____ _ ___ ___
info: /_\ |_ / | | | _ \ __|
info: _ ___/ _ \__/ /| |_| | / _|___ _ _
info: (___ /_/ \_\/___|\___/|_|_\___| _____)
info: (_______ _ _) _ ______ _)_ _
info: (______________ _ ) (___ _ _)
info:
info: Microsoft Azure: Microsoft's Cloud Platform
info:
info: Tool version 0.9.9
(略)
help: Current Mode: asm (Azure Service Management)
$
Azure CLI を使う場合には少しだけ準備があり、Azure で作ったアカウントを認証するための設定が必要。
$ azure account download
info: Executing command account download
info: Launching browser to http://
help: Save the downloaded file, then execute the command
help: account import
info: account download command OK
指示されたようにファイルをダウンロードして、以下のようにインポート。
$ azure account import credentials.publishsettings
info: Executing command account import
info: account import command OK
これで Azure CLI が利用可能になる。
ストレージアカウント
Azure ポータルまたは Azure CLI にて作成することが出来る。この時、作成するロケーションに注意します。日本であれば、日本(西)「Japan West」等。これは後に起動する仮想マシンと同じロケーションしておく。アカウントを作成すると、ストレージアカウント名が確認る。詳細な作成方法は割愛。
ストレージアカウントは1度でも仮想マシンを作った事があるとそれに準じて自動で作成される
管理証明書
外部 API からのアクセスするアカウントを Azure 側で認証するために必要なもの。いくつかやり方はあるが、一番簡単だと思われる方法としては Azure CLI を使う方法。Azure CLI を使う場合は既に証明書が登録されているので、そこからエクスポートして取得する。
$ azure acount cert export -f ./manage.cer
まとめると、Azure CLI では以下のようにサブスクリプションID、ストレージアカウント名の確認、管理証明書の取得ができる。
$ azure account list
$ azure storage account list
$ azure acount cert export -f ./manage.cer
Ansible マシンを用意
Ansible インストール
Ansible がインストールされたLinuxマシンを用意。ここでは Ubuntu 14.04 を使用。
実は Azure 上に Windows 系の仮想マシンを起動させるためには、投稿時点の Ansible 1.9.x 系のバージョンではなく次期バージョンである 2.0.0 以上が必要。
$ git clone https://github.com/ansible/ansible.git
$ cd ansible
$ git checkout v2.0.0-0.3.beta1
$ git submodule update --init
$ . hacking/env-setup
$ ansible --version
ansible 2.0.0 (detached HEAD 5ae74f7d38) last updated 2015/10/12 07:19:07 (GMT +000)
lib/ansible/modules/core: (detached HEAD d659c79db7) last updated 2015/10/12 07:19:50 (GMT +000)
lib/ansible/modules/extras: (detached HEAD 0ff1776a84) last updated 2015/10/12 07:20:14 (GMT +000)
config file = /etc/ansible/ansible.cf
Ansible で用意されている Azure モジュールは以下の環境でサポート。
- Python >= 2.6
- Python azure module >= 0.8.0 (Ansible マニュアルは少し古い情報)
追加で Python の Azure モジュールをインストール。
$ sudo pip install azure==0.11.1
$ sudo pip show azure
---
Name: azure
Version: 0.11.1
Location: /usr/local/lib/python2.7/dist-packages
Requires: python-dateutil, futures
投稿時時点で、このモジュールは1.0.2が最新ですが、1.0.2は Ansible の Azure モジュールが対応していない事がわかっているため0.11.1を使っています。
この対応は開発中の 2.0.0 devel にマージされた。
https://github.com/ansible/ansible-modules-core/pull/2114
Ansible 実行準備(インベントリファイルとプレイブック)
Ansible の実行に必要なファイルは「インベントリファイル」と「プレイブック」ファイルです。今回はそれぞれ以下のように作成。
127.0.0.1 ansible_connection=local
---
- hosts: localhost
gather_facts: no
tasks:
- name: Create Virtual Machine on Azure (for Windows)
azure: # Ansible の azure モジュールを使うことを宣言し、以下はそのオプション
auto_updates: no
enable_winrm: yes
endpoints: "3389"
image: 'bd507d3a70934695bc2128e3e5a255ba__RightImage-Windows-2012R2-x64-v14.2'
location: 'Japan West'
management_cert_path: /home/vagrant/azure/manage.cer # 取得した管理証明書
hostname: hogehoge
name: hogehoge
os_type: windows
user: azureuser
password: "Password_123"
role_size: Basic_A2
state: present
storage_account: # 取得したストレージアカウント名
subscription_id: # 取得したすサブスクリプションID
上記の各オプションでAzure側の情報を取得しなければわからないものとして、image , location , role_size がある。これらに何を指定したらよいかは自身で選択するが、image と location は Azure CLI で確認できる。
$ azure vm image list
$ azure vm location list
role_size は 仮想マシンのサイズ(スペック)については以下によると、
"ExtraSmall"、"Small"、"Medium"、"Large"、"ExtraLarge"、"A5"、"A6"、"A7"、"A8"、"A9"、"A10"、"A11"、"Basic_A0"、"Basic_A1"、"Basic_A2"、"Basic_A3"、"Basic_A4"、"Standard_D1"、"Standard_D2"、"Standard_D3"、"Standard_D4"、"Standard_D11"、"Standard_D12"、"Standard_D13"、"Standard_D14"、"Standard_DS1"、"Standard_DS2"、"Standard_DS3"、"Standard_DS4"、"Standard_DS11"、"Standard_DS12"、"Standard_DS13"、"Standard_DS14"、"Standard_G1"、"Standard_G2"、"Standard_G3"、"Standard_G4"、"Standard_G55"です。使えるスペックはロケーションにより異なります。role_size のデフォルトは "Small" 。
Ansible 実行
$ ansible-playbook -i hosts playbook.yml
確認
Azure CLI や Azureポータルから確認
補足
ResetPasswordOnFirstLogon パラメータは廃止されている
これにより、Ansible Azure モジュールオプションの reset_pass_atlogon は使う事ができません。既存 ISSUE 2245。
参考
- https://azure.microsoft.com/ja-jp/get-started/
- https://azure.microsoft.com/ja-jp/documentation/articles/xplat-cli-install/
- https://azure.microsoft.com/ja-jp/documentation/
- https://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-command-line-tools/
- http://docs.ansible.com/ansible/intro_installation.html