ポータルぽちぽちはめんどくさいと思って、
公式見ながらcliでやったらもっと面倒くさかった時の備忘録。
前提知識
デプロイモデルは2種類ある
クラシック(クラウドサービス)とリソースマネージャー
今回はデプロイモデルはモダンなリソースマネージャーを使う
VM作成には、以下のようにレイヤー毎にいくつかのコンポーネントが必要
流れは以下になる
0. Azure Cliの設定
- リソースグループの作成
- コンポーネントの作成
- VMの作成など
#0. Azure Cliの設定
Azure cliのインスコ
Nodeを入れて、npmからインスコ
$ node -v
v0.12.0
$ npm install -g azure
$ azure -v
0.9.13
セットアップ
定義ファイル
#!/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/