概要
AzureをCLIで扱った経験がなかったもんで、下記などの基本的な操作を実行してみる。
- インスタンスの開始・終了
- ストレージの作成とattach
- ファイルストレージの操作
バージョン情報
- azure-cli 2.0.54-1
- Ubuntu 18.04.1 LTS
導入
MSのサイトを参考にazure-cliを入れる。
https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest
ログイン
とりあえずログイン。
$ az login
ブラウザが立ち上がるのでログインを実行すると下記のようなJSONが返る。
[ { "cloudName": "AzureCloud", "id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx", "isDefault": true, "name": "Azure プラン", "state": "Enabled", "tenantId": "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx", "user": { "name": "xxxxxx@xxx.jp", "type": "user" } } ]
~/.azure 配下にTokenとかの情報が保存される。
VMの立ち上げ
VMを一個作って立ち上げてみる。コマンドは下記のような感じ。
$ RESOURCE_GROUP=your_resource_group_name $ az vm create --resource-group $RESOURCE_GROUP \ --name example-vm \ --image UbuntuLTS \ --generate-ssh-keys \ --output json \ --verbose
利用できるイメージは下記で一覧が出せる。(結果は一部抜粋)
$ az vm image list [ { "offer": "CentOS", "publisher": "OpenLogic", "sku": "7.5", "urn": "OpenLogic:CentOS:7.5:latest", "urnAlias": "CentOS", "version": "latest" }, { "offer": "RHEL", "publisher": "RedHat", "sku": "7-RAW", "urn": "RedHat:RHEL:7-RAW:latest", "urnAlias": "RHEL", "version": "latest" }, { "offer": "UbuntuServer", "publisher": "Canonical", "sku": "16.04-LTS", "urn": "Canonical:UbuntuServer:16.04-LTS:latest", "urnAlias": "UbuntuLTS", "version": "latest" } ]
UbuntuLTSを指定した場合、バージョンは16.04になるらしい(2019年1月時点)。
--generate-ssh-keys を指定しておくと ~/.ssh/id_rsa に自動で鍵が作られる。
az vm create を実行するとJSONが返ってきて中にpublic ip addressが記載されている。
"publicIpAddress": "xxx.xxx.xxx.xxx"
鍵は設定されているのでこのIPアドレスにsshすれば入れる。ユーザー名もaz createを実行したユーザーの名前になっている。
$ ssh xxx.xxx.xxx.xxx
VMの停止と再開
まずはdeallocate。
$ az vm deallocate \ --resource-group $RESOURCE_GROUP \ --name example-vm
これで停止した。
再開する場合はstart。
$ az vm start \ --resource-group $RESOURCE_GROUP \ --name example-vm
再開するとIPアドレスが変わってしまうので確認。
$ az vm list-ip-addresses \ --output table
vmの削除
vmのみの削除であればdeleteで実行できる。
$ az vm delete \ --resource-group $RESOURCE_GROUP \ --name example-vm
az vm deleteだけだとこの辺は残ったままになる。
- ディスク
- ネットワーク セキュリティ グループ
- パブリック IP アドレス
- ネットワーク インターフェイス
- 仮想ネットワーク
az resouce listで現状のリソースの一覧が出てくる。
$ az resource list \ --resource-group $RESOURCE_GROUP \ --output table
jqを使ってnameにexample-vmを含むリソースのIDだけを取ってみる。
$ az resource list | jq -c '.[] | select(any(.name; contains("example-vm"))) | .id'
これらも削除する場合はタグ付けしておいてコマンドで一気に削除できると便利。とりあえず今回は個別に削除。
$ az resource delete --ids {スペース区切りで消したいリソースのIDを記述する}
sizeやlocationを指定してVMを立ち上げる
デフォルトではStandard_DS1_v2(1コア、メモリ3.5G)でVMは立ち上がる。 --sizeで他のsizeを指定して立ち上げてみる。またlocationはデフォルトではresource groupの指定と同じ値になるが、試しに別のlocationを指定してみる。
下記はsizeはBシリーズでコア2つ、メモリ4GBのB2Sで、locationはeastusを指定した例。ついでに--admin-usernameも自分の名前を指定しておく。
$ az vm create --resource-group $RESOURCE_GROUP \ --name example-vm \ --image UbuntuLTS \ --generate-ssh-keys \ --output json \ --size Standard_B2s \ --location eastus \ --admin-username masato.watanabe \ --verbose
ディスクの追加とattach
デフォルトのディスクでは足りなくなることも多いので追加のディスクをcreateしてattachしてみる。
先程作ったVMに合わせてeastusに作成する。
$ az disk create --resource-group $RESOURCE_GROUP \ --name example-disk \ --os-type Linux \ --sku StandardSSD_LRS --location eastus \ --size-gb 64
これで64GBのSSDが確保できた。
続いてattach。
$ az vm disk attach --resource-group $RESOURCE_GROUP \ --vm-name example-vm \ --disk example-disk
VMにsshしてdmesgでattachされたディスクを確認。
$ dmesg | grep SCSI [ 3.326313] sd 0:0:0:0: [sda] Attached SCSI disk [ 3.695336] sd 1:0:1:0: [sdb] Attached SCSI disk [ 6360.476606] sd 3:0:0:0: [sdc] Attached SCSI disk
上記ログでは最後にsdcがアタッチされたっぽい。
/dev配下にsdcが出来ていることを確認。
$ ls /dev/sd* /dev/sda /dev/sda1 /dev/sdb /dev/sdb1 /dev/sdc
fdiskでパーティションを作成。nで新規作成、pでPrimaryを選んで、Partition numberは1にして、sectorはデフォルトのままで、最後にwで終了。
$ sudo fdisk /dev/sdc Command (m for help): n Partition type Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-134217727, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-134217727, default 134217727): Command (m for help): w
sdc1ができていることを確認。
$ ls /dev/sd* /dev/sda /dev/sda1 /dev/sdb /dev/sdb1 /dev/sdc /dev/sdc1
ext4でフォーマット。
$ sudo mkfs -t ext4 /dev/sdc1
mount
$ sudo mount -t ext4 /dev/sdc1 /mnt/data
dfで/dev/sdc1がマウントされていることを確認。
$ df -h /dev/sdc1 63G 52M 60G 1% /mnt/data
ファイルストレージの操作
Web UIから下記の3つの作業が行われているものとする。
- ストレージアカウントを生成
- 「アクセスキー」からストレージアカウントのキーを取得
- 「ファイルストレージ」の「ファイル共有」から共有を生成済み
下記の値を変数に設定。
ACCOUNT_NAME=ストレージのアカウント名 ACCOUNT_KEY=アカウントキー SHARE_NAME=ファイル共有の名前
ディレクトリを生成
$ az storage directory create \ --name example \ --account-name $ACCOUNT_NAME \ --account-key $ACCOUNT_KEY \ --share-name $SHARE_NAME
ファイルをアップロード
$ az storage file upload \ --account-name $ACCOUNT_NAME \ --account-key $ACCOUNT_KEY \ --share-name $SHARE_NAME \ --source example.txt \ --path example/example.txt
ファイル一覧を取得
$ az storage file list \ --account-name $ACCOUNT_NAME \ --account-key $ACCOUNT_KEY \ --share-name $SHARE_NAME \ --path example \ --output table
実行結果
Name Content Length Type Last Modified ----------- ---------------- ------ --------------- example.txt 8 file
ファイルのダウンロード
$ az storage file download \ --account-name $ACCOUNT_NAME \ --account-key $ACCOUNT_KEY \ --share-name $SHARE_NAME \ --path example/example.txt
ディレクトリごとダウンロード
$ az storage file download-batch \ --account-name $ACCOUNT_NAME \ --account-key $ACCOUNT_KEY \ --source $SHARE_NAME/example \ --destination .
ファイル削除
$ az storage file delete \ --account-name $ACCOUNT_NAME \ --account-key $ACCOUNT_KEY \ --share-name $SHARE_NAME \ --path example/example.txt
ディレクトリ削除
$ az storage directory delete \ --account-name $ACCOUNT_NAME \ --account-key $ACCOUNT_KEY \ --share-name $SHARE_NAME \ --name example
改定履歴
Author: Masato Watanabe, Date: 2019-02-26, 記事投稿