zaki work log

作業ログやら生活ログやらなんやら

[Azure] CLIツールをインストール(CentOS)して、VM作るまでお試し実行

AzureのCLIコマンドをローカルのCentOS7へインストールする。(ただそれだけ)
yumを使ってインストールするので簡単。

docs.microsoft.com

2020.07.28時点でver 2.9.1をインストールした時の作業ログです。
インストールする際は、最新の情報を確認して作業しましょう。

環境

CentOS 7で確認。

Pythonバージョン(python3)はこの通り。
(baseのpython3.x86_64を使用)

[zaki@cloud-dev ~]$ python3 --version
Python 3.6.8

OS標準のpythonも入っている状態

[zaki@cloud-dev ~]$ python --version
Python 2.7.5

インストール

AzureのCLIコマンドはYumリポジトリ設定を行いyumでインストールするようになっている。

リポジトリ設定before

[zaki@cloud-dev ~]$ ls -l /etc/yum.repos.d/
合計 48
-rw-r--r--. 1 root root 1664  9月  5  2019 CentOS-Base.repo     
-rw-r--r--. 1 root root 1309  9月  5  2019 CentOS-CR.repo       
-rw-r--r--. 1 root root  649  9月  5  2019 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  630  9月  5  2019 CentOS-Media.repo    
-rw-r--r--. 1 root root 1331  9月  5  2019 CentOS-Sources.repo  
-rw-r--r--. 1 root root 6639  9月  5  2019 CentOS-Vault.repo    
-rw-r--r--. 1 root root  314  9月  5  2019 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 2424 10月 19  2019 docker-ce.repo       
-rw-r--r--. 1 root root 1050 10月  3  2017 epel-testing.repo    
-rw-r--r--. 1 root root  951 10月  3  2017 epel.repo
-rw-r--r--. 1 root root  263  7月  5 13:17 kubernetes.repo    

リポジトリキー設定

[zaki@cloud-dev ~]$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc

リポジトリ設定

[zaki@cloud-dev ~]$ sudo sh -c 'echo -e "[azure-cli]
> name=Azure CLI
> baseurl=https://packages.microsoft.com/yumrepos/azure-cli
> enabled=1
> gpgcheck=1
> gpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/azure-cli.repo'
[zaki@cloud-dev ~]$ ls -l /etc/yum.repos.d/azure-cli.repo 
-rw-r--r--. 1 root root 163  7月 28 21:27 /etc/yum.repos.d/azure-cli.repo

yum install

[zaki@cloud-dev ~]$ sudo yum install azure-cli

特に問題なくインストールできるはず。

確認

[zaki@cloud-dev ~]$ az version
{
  "azure-cli": "2.9.1",
  "azure-cli-command-modules-nspkg": "2.0.3",
  "azure-cli-core": "2.9.1",
  "azure-cli-nspkg": "3.0.4",
  "azure-cli-telemetry": "1.0.4",
  "extensions": {}
}

認証設定

az loginを実行すると認証用のキーコードが表示される。

[zaki@cloud-dev ~]$ az login
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code ******** to authenticate.

ので、まずブラウザで表示されているURL(https://microsoft.com/devicelogin)を開く。

f:id:zaki-hmkc:20200728214345p:plain

そして、az loginの実行で表示されたキーコードを入力すると認証が完了する。

f:id:zaki-hmkc:20200728214432p:plain

これが表示されると、認証待ち状態で止まっていたaz loginの実行も処理が継続して、設定完了する。

[zaki@cloud-dev ~]$ az login
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code ******** to authenticate.
[
  {
    "cloudName": "AzureCloud",
    "homeTenantId": "****************",
    "id": "****************",
    "isDefault": true,
    "managedByTenants": [],
    "name": "従量課金",
    "state": "Enabled",
    "tenantId": "****************",
    "user": {
      "name": "********",
      "type": "user"
    }
  }
]

出力された認証情報は、~/.azure/azureProfile.jsonに保存される模様。

お試し

リソースグループ確認

[zaki@cloud-dev ~]$ az group list --query '[].name'
[
  "vso-rg-e12da7e",
  "NetworkWatcherRG",
  "Default-ActivityLogAlerts"
]

f:id:zaki-hmkc:20200728220103p:plain

同じものが見えてます。

VM作成

ついでなのでVMも作ってみる。

docs.microsoft.com

リソースグループを作成

$ az group create --name example-rg --location japaneast

実行するとこの通り。

[zaki@cloud-dev ~]$ az group create --name example-rg --location japaneast
{
  "id": "/subscriptions/****************/resourceGroups/example-rg",
  "location": "japaneast",
  "managedBy": null,
  "name": "example-rg",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

f:id:zaki-hmkc:20200728221211p:plain

ちなみにコマンドの実行完了とリソースの作成完了はリンクしていないので非同期で処理されているように見える。

VM作成

$ az vm create --resource-group example-rg \
  --name sample-vm \
  --image UbuntuLTS \
  --size Standard_B1s \
  --generate-ssh-keys \
  --output json \
  --verbose

--sizeで指定できるインスタンスタイプはaz vm list-sizesで確認できる。(locationの指定が必要)

[zaki@cloud-dev ~]$ az vm list-sizes --location japaneast

タイプごとのスペックと料金はこちらも参照。

azure.microsoft.com

[zaki@cloud-dev ~]$ az vm create --resource-group example-rg \
>   --name sample-vm \
>   --image UbuntuLTS \
>   --size Standard_B1s \
>   --generate-ssh-keys \
>   --output json \
>   --verbose 
Use existing SSH public key file: /home/zaki/.ssh/id_rsa.pub
{- Finished ..
  "fqdns": "",
  "id": "/subscriptions/****************/resourceGroups/example-rg/providers/Microsoft.Compute/virtualMachines/sample-vm",
  "location": "japaneast",
  "macAddress": "00-**-**-**-**-**",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "**.**.**.**",
  "resourceGroup": "example-rg",
  "zones": ""
}
Command ran in 76.999 seconds (init: 0.027, invoke: 76.971)

time付け忘れたけど、実行時間が表示される親切設計だった。。。いや、--verbose付けたからかな?(未確認)

f:id:zaki-hmkc:20200728221539p:plain

表示されてる通り、パブリックIPアドレスが分かるので、sshする。

[zaki@cloud-dev ~]$ ssh azureuser@**.**.**.**
The authenticity of host '**.**.**.** (**.**.**.**)' can't be established.
ECDSA key fingerprint is SHA256:3rpvV1bQY0vCOSQPaT7UGOBX0oXqHmhKMJDlCj1ZMRo.
ECDSA key fingerprint is MD5:f2:99:e0:69:9c:d5:40:72:f9:56:01:95:d6:a2:8e:30.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '**.**.**.**' (ECDSA) to the list of known hosts.
Permission denied (publickey).

あれ?

いろいろ試した結果、az vm createを実行した実行元ホストのユーザー名でAzure上のVMのユーザー名も作られるっぽい。
なので、ユーザー名は指定なしで

[zaki@cloud-dev ~]$ ssh **.**.**.**
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 5.3.0-1032-azure x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue Jul 28 13:18:16 UTC 2020

  System load:  0.01              Processes:           115
  Usage of /:   4.4% of 28.90GB   Users logged in:     0
  Memory usage: 30%               IP address for eth0: 10.0.0.4
  Swap usage:   0%

0 packages can be updated.
0 updates are security updates.



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

zaki@sample-vm:~$ 

なるほど。

zaki@sample-vm:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            427M     0  427M   0% /dev
tmpfs            89M  660K   89M   1% /run
/dev/sdb1        29G  1.3G   28G   5% /
tmpfs           445M     0  445M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           445M     0  445M   0% /sys/fs/cgroup
/dev/sdb15      105M  3.6M  101M   4% /boot/efi
/dev/sda1       3.9G   16M  3.7G   1% /mnt
tmpfs            89M     0   89M   0% /run/user/1000
zaki@sample-vm:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           889M        211M        409M        672K        268M        537M
Swap:            0B          0B          0B

チュートリアルには、VM作成以外にVM情報の取得環境変数の設定VMの追加などあるのでチェック。

削除(クリンナップ)

リソースグループを削除することで、ネットワーク等含めて関連リソースが全て削除される。

$ az group delete --name example-rg

--no-waitを付与すると、非同期で処理される模様。(コマンドはすぐに完了する)

[zaki@cloud-dev ~]$ az group delete --name example-rg
Are you sure you want to perform this operation? (y/n): y
 - Running ..

削除が始まると、状態が「削除中」になる。

f:id:zaki-hmkc:20200728223248p:plain

完了すればこの通り。

[zaki@cloud-dev ~]$ az group delete --name example-rg
Are you sure you want to perform this operation? (y/n): y
[zaki@cloud-dev ~]$ 

またまたtimeつけ忘れたけど、createに比べてかなり時間かかりました。