LoginSignup
0
0

More than 5 years have passed since last update.

Microsoft AzureのMobile Servicesを使う - Part2: 開発用の仮想マシンを作成する

Posted at

Mobile Servicesを使う場合はMBaaSなので仮想マシンを作成する必要はありません。azureコマンドラインツールはMobile Servicesでも使いますが、通常の仮想マシンや、Docker用の仮想マシンの作成、ストレージの作成など、サブコマンドから多くのことができます。Mobile Servicesから少し逸れますが、azureコマンドラインツールの練習用にちょっと複雑なSaltクラスタの開発用仮想マシンを作成してみます。

参考

クラスタ用の仮想マシンを作成する場合、Microsof AzureではSSH用の鍵を作成からはじまり、アフィニティグループの作成、クラウドサービスの作成、仮想ネットワークの作成、DNSサーバーの作成、ストレージアカウントの作成と、仮想マシンを作成する前にいろいろ準備が必要です。

SSH用の鍵を作成

前回xplat-cliをインストールしたコンテナのbashを起動します。

$ docker exec -it nodeenv /bin/bash

SSH接続用にX509 証明書にカプセル化された公開鍵を作成します。

$ openssl req -x509 -nodes -days 3650 \
  -newkey rsa:2048 \
  -keyout azure.key \
  -out azure-cert.pem

作成した公開鍵と秘密鍵を移動します。

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ mv azure* ~/.ssh
$ chmod 600 ~/.ssh/azure.key

~/.ssh/configにazureuserを設定します。

$ cat >> ~/.ssh/config <<EOS
Host *.cloudapp.net
    User azureuser
    IdentityFile $HOME/.ssh/azure.key
EOS

イメージの検索

azureコマンドの戻り値JSONをパースするためjqをインストールします。

$ cd /usr/local/bin
$ wget -O jq http://stedolan.github.io/jq/download/linux64/jq
$ chmod u+x jq

jqのバージョンは1.4です。

$ jq --version
jq-1.4

Ubuntu 14.04.1のイメージをjqを使い検索します。

$ azure vm image list --json | jq '.[] | select(.publisherName == "Canonical" and contains({label:"14.04.1"})) | {label,name,imageFamily}'
{
  "label": "Ubuntu Server 14.04.1 LTS",
  "name": "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04-LTS-amd64-server-20140724-en-us-30GB",
  "imageFamily": "Ubuntu Server 14.04 LTS"
}
{
  "label": "Ubuntu Server 14.04.1 LTS",
  "name": "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04_1-LTS-amd64-server-20140909-en-us-30GB",
  "imageFamily": "Ubuntu Server 14.04 LTS"
}
...

仮想ネットワークの作成

アフィニティグループを作成します。

$ azure account affinity-group create \
  --location "Japan East" \
  --label salt-affinity \
  salt-affinity
info:    Executing command account affinity-group create
+ Creating affinity group
info:    account affinity-group create command OK

仮想ネットワークを作成します。

$ azure network vnet create  \
  --address-space 10.0.0.0 \
  --cidr 8 \
  --subnet-name salt \
  --subnet-start-ip 10.0.0.0 \
  --subnet-cidr 24 \
  --affinity-group salt-affinity \
  saltvnet
info:    Executing command network vnet create
+ Getting network configuration
+ Getting or creating affinity group
+ Getting affinity groups
info:    Using affinity group salt-affinity
+ Updating Network Configuration
info:    network vnet create command OK

Linuxの場合はDNSサーバーは不要

Azure での Linux 入門を読むと、Linuxイメージを使う場合は自分でDNSサーバーを作成する必要はなさそうです。

最初に Linux イメージのインスタンスをデプロイするときに、仮想マシンのホスト名を提供するように求められます。仮想マシンが実行されると、このホスト名はプラットフォーム DNS サーバーに公開されます。相互に接続された複数の仮想マシンがホスト名を使用して IP アドレス検索を実行できるようになります。

ストレージアカウントを作成

ストレージアカウントを作成します。

$ azure storage account create \
  --affinity-group salt-affinity \
  mysaltstorage
info:    Executing command storage account create
+ Creating storage account
info:    storage account create command OK

仮想マシンの作成

salt-master用のクラウドサービスを作成します。

$ azure service create \
  --affinitygroup salt-affinity \
  masato-salt
info:    Executing command service create
+ Creating cloud service
data:    Cloud service name masato-salt
info:    service create command OK

salt-master用の仮想マシンを作成します。

$ azure vm create \
  --vm-size Small \
  --ssh 22 \
  --ssh-cert ~/.ssh/azure-cert.pem \
  --no-ssh-password \
  --virtual-network-name saltvnet \
  --subnet-names salt \
  --affinity-group salt-affinity \
  masato-salt \
  b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04_1-LTS-amd64-server-20141125-en-us-30GB \
  azureuser
info:    Executing command vm create
- Looking up image b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04_1-LTS-amd64-server-20141125-en-us-+0GB
+ Looking up virtual network
+ Looking up cloud service
warn:    --affinity-group option will be ignored
+ Getting cloud service properties
+ Looking up deployment
+ Retrieving storage accounts
+ Configuring certificate
+ Creating VM
info:    OK
info:    vm create command OK

仮想マシンを確認します。

$ azure vm show masato-salt
...
data:    VirtualIPAddresses 0 address "104.41.187.251"
data:    VirtualIPAddresses 0 name "masato-saltContractContract"
data:    VirtualIPAddresses 0 isDnsProgrammed true
data:    Network Endpoints 0 localPort 22
data:    Network Endpoints 0 name "ssh"
data:    Network Endpoints 0 port 22
data:    Network Endpoints 0 protocol "tcp"
data:    Network Endpoints 0 virtualIPAddress "104.41.187.251"
data:    Network Endpoints 0 enableDirectServerReturn false
info:    vm show command OK

SSH接続の確認

仮想マシンに、一番最初の手順で作成した鍵を使いSSH接続します。

$ ssh -A azureuser@masato-salt.cloudapp.net -i .ssh/azure.key -o IdentitiesOnly=yes
...
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-40-generic x86_64)
...
azureuser@masato-salt:~$

次回はsalt-minion用のクラウドサービスと仮想マシンも作成して、Saltクラスタのインストールをする予定です。

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