LoginSignup
14
15

More than 5 years have passed since last update.

Azure CliでVM作った時の備忘録

Last updated at Posted at 2016-01-27

ポータルぽちぽちはめんどくさいと思って、
公式見ながらcliでやったらもっと面倒くさかった時の備忘録。

前提知識

デプロイモデルは2種類ある
クラシック(クラウドサービス)とリソースマネージャー
今回はデプロイモデルはモダンなリソースマネージャーを使う

VM作成には、以下のようにレイヤー毎にいくつかのコンポーネントが必要
image

流れは以下になる
0. Azure Cliの設定
1. リソースグループの作成
2. コンポーネントの作成
3. VMの作成など

0. Azure Cliの設定

Azure cliのインスコ

Nodeを入れて、npmからインスコ

$ node -v
v0.12.0
$ npm install -g azure
$ azure -v 
0.9.13

セットアップ

定義ファイル

var.sh
#!/bin/sh
export USERNAME=hoge
export RGNAME=hogersg # リソースグループ名
export LOCNAME=japanwest # リージョン名
export SANAME=hogesa # ストレージアカウント名
export VNETNAME=hogevnet # VNet名
export SUBID=0fc5e # サブスクリプションID
export SNETNAME=hogesnet # サブネット名
export PIPNAME=hogepip # パブリックIP名
export DNLABEL=hoge # DNSラベル(FQDNのホスト)
export NSGNAME=hogensg # NSG名
export NSGRULENAME=hogensgrule # NSGルール名
export NICNAME=hogenic # NIC名
export URN=CoreOS:CoreOS:Stable:835.9.0 # image名
export VMNAME=hogevm # vm名
export ADDRSPACE= 192.168.0.0/16 # アドレス空間
export SNETADDR=192.168.1.0/24 # サブネットアドレス
export LIPADDR=192.168.1.5 # ローカルIPアドレス

先にMSのアカウントを作成し、Azureに登録してサブスクリプションを手に入れる。

$ source var.sh 
$ azure login # ログイン処理
$ azure account list # サブスクリプション一覧
$ azure account show # 自分のサブスクリプションの情報の確認
$ azure account set <RGNAME> true # サブスクリプションIDの切り替え

1. リソースグループの作成

デプロイモデルの選択

$ azure config mode arm # アジュールリソースマネージャーモードを選択
$ azure config list # 確認
$ azure group create -n <RGNAME> -l <LOCNAME>
$ azure group list # 確認

デプロイモデルについては
https://azure.microsoft.com/ja-jp/documentation/articles/xplat-cli-azure-resource-manager/

2. コンポーネントの作成

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

$ azure storage account create <SANAME> --type LRS -g <RGNAME> \
 -l <LOCNAME> -s <SUBID>
$ azure storage account show <SANAME> -g <RGNAME> --json # storage accountの作成確認
$ azure storage account keys list <SANAME> -g <RGNAME> # access key のキーの確認
$ azure storage account connectionstring show <SANAME> -g <RGNAME> # connection string の確認

※ storage accountのリソース作成などにはaccess keyまたはconnection stringを使った接続方法がある

仮想ネットワークの作成

$ azure network vnet create -g <RGNAME> -n <VNETNAME> -a <ADDRSPACE> \
 -l <LOCNAME>
$ azure network vnet list -g <RGNAME> --json # VNETの確認

VNETの設定の詳細はここ
https://msdn.microsoft.com/en-us/library/azure/jj157100.aspx

サブネットの作成

$ azure network vnet subnet create -g <RGNAME> --vnet-name <VNETNAME> \
-n <SNETNAME> -a <SNETADDR>
$ azure network vnet subnet list -g <RGNAME> --vnet-name <VNETNAME> # サブネットの確認

ちなみに、サブネットの通信には仮想アプライアンスがあり、仮想のルーターがIPフォワーディングしていると思う。

パブリックIPの作成

$ azure network public-ip create -g <RGNAME> -n <PIPNAME> \
 -l <LOCNAME> --allocation-method Static --domain-name-label <DNLABEL>
$ azure network public-ip list -g <RGNAME> # パブリックIPの確認(NICなのでまだPIPはない)

ドメイン・ネームラベルは、<LABEL>.<REGION>.cloudapp.azure.comとなる

ネットワークセキュリティグループの作成

$ azure network nsg create -g <RGNAME> -n <NSGNAME> -l <LOCNAME>
$ azure network nsg list -g <RGNAME> --json # NSG作成の確認

ネットワークセキュリティグループのルール(SSH Port Allow)の追加

$ azure network nsg rule create -g <RGNAME> -a <NSGNAME> \
-n <NSGRULENAME>  --source-port-range '*' \
 --destination-port-range 22 --access Allow
$ azure network nsg rule list -g <RGNAME> -n <NSGNAME> # firewallのruleの確認

ネットワークインターフェイスの作成

$ azure network nic create -g <RGNAME> -n <NICNAME> \
-l <LOCNAME> --network-security-group-name <NSGNAME> \
-a <LIPADDR> --subnet-name <SNETNAME> --subnet-vnet-name <VNETNAME>
$ azure network nic list -g <RGNAME> --json # 確認

※VNETとNICは同一リージョンの必要がある

3. 仮想マシンの作成

VM image(URN)を探す

$ azure location list # location名を調べる
$ azure vm image list-publishers <LOCNAME> # これでPublisherとlocationが分かる。例えばCoreOS, japanwestなど
$ azure vm image list-offers <LOCNAME> CoreOS # location, publisherからOfferを調べる
$ azure vm image list <LOCNAME> CoreOS CoreOS # location, offer, publisherからUrnを調べる

SSLログインキーを作成

$ ssh-keygen -t rsa -b 2048 -f ./kagi
$ chmod 600 kagi

VMの作成

$ azure vm create -g <RGNAME> -n <VMNAME> \
--location <LOCNAME> --nic-name <NICNAME> \
--os-type Linux --image-urn <URN> --admin-username <USERNAME> \
--vm-size Standard_A1 --ssh-publickey-file ./kagi.pub \
--public-ip-name <PIPNAME> --vnet-name <VNETNAME> \
--vnet-subnet-name <SNETNAME> --storage-account-name <SANAME>
$ # azure vm quick-create -s <SUBID>

--availset-name
--vnet-subnet-address-prefix
--storage-account-container-name
--os-disk-vhd
--custom-data
--disable-boot-diagnostics

※仕様は以下になってる
・もしなかったらNICは自動生成
・NICはVMに複数参照可能
・もしなかったらPIPは自動生成

VMのサイズは以下
https://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-size-specs/

接続テスト

$ azure vm list # 確認
$ ssh -i ./kagi -l <USERNAME> <USERNAME>.<LOCNAME>.cloudapp.azure.com # sshログイン

リソースグループ削除

$ azure group list # 確認
$ azure group delete <RGNAME>

参考文献

https://azure.microsoft.com/en-gb/documentation/articles/load-balancer-get-started-ilb-arm-cli/
http://qiita.com/adeonhy/items/21f06b489c958f7678a5
https://lazure2.wordpress.com/2015/07/11/microsoft-cloud-state-of-the-art-hyper-scale-azure-with-host-sdn-iaas-2-0-hybrid-flexibility-and-freedom/
https://github.com/Azure/azure-content/blob/master/articles/virtual-network/virtual-networks-static-private-ip-arm-cli.md
https://azure.microsoft.com/en-us/blog/announcing-reverse-dns-for-azure-cloud-services/

14
15
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
14
15