Azure CLI の使い方

カバー

[!] この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Azure Stack 上に仮想マシンを立ててサービスを構築した際、そのサービスから仮想マシンのIPアドレス割当を変更したい場面がありました。
一般的にはAzure Stackの仮想マシンやネットワークなどのリソース操作はポータル画面からおこないますが、サービスからポータル画面を操作することはできないため、Azure Stackをコマンドで操作できるAzure CLIについて調査しましたので紹介します。

Azure, Azure CLIについて

  • Azure:Microsoftが運営しているクラウド環境
  • Azure Stack:上記のプライベートクラウド版
  • Azure CLI:Azureをコマンドラインで操作するツール
    • Pythonをベースとしており、Windows/Linux/Macで利用可能
    • PowershellベースのAzure Powershellもある
    • WebUIもAzure CLIもAzure Powershellも、機能的にはできることはほぼ共通
    • 対話的な操作ならWebUIでよいが、サービスから自動実行させるときなどはCLIが必要

Azure CLIのインストールとAzureへのログイン

公式サイトからインストーラーをダウンロードしてインストールします。 https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli

インストールできたら、コンソール(WindowsならコマンドプロンプトやPowershell)から次を実行してログインします。

az login

コマンドを実行するとブラウザで認証画面が開くので、そこでログインするとコンソール上でもログインしたことになります。

※ただし、プロキシ経由では失敗することがあります。公式サイトに記載されている回避方法も参照してみてください。
https://docs.microsoft.com/ja-jp/cli/azure/use-cli-effectively#work-behind-a-proxy

Azure Stackにログインする場合

Azureとアクセス先が異なるため、ログイン実行前にアクセス先を指定する必要があります。

az cloud register -n AzureStackUser --endpoint-resource-manager "https://management.xxx.yyy.zzz"
az cloud set -n AzureStackUser
az cloud update --profile 2019-03-01-hybrid
  • --endpoint-resource-managerにはAzure StackのResource ManagerエンドポイントURLを指定する
  • --profileの引数もAzure Stack環境ごとに異なり、間違うと動かないコマンドがある
    • 次のコマンドで予め利用可能なプロファイルを確認できる
      az cloud list-profiles
      

あとはAzureと同様にaz loginコマンドを実行してログインします。

ログイン状態を維持する方法

az loginコマンドでログインした後、非アクティブな状態が90日間続くとログイン状態が解除されてしまいます。サービスやタスクスケジューラから定期的にAzure CLIコマンドを実行することでログイン状態を維持することができます。

定期実行する際は、実際にAzure CLIコマンドを実行するユーザの権限で実行する必要があります。ログイン情報が当該ユーザのホームディレクトリ配下の.azureディレクトリに保存されるためです。

ログイン状態を維持するために実行するAzure CLIコマンドは何でも構いません。リソースグループ一覧を表示するaz group listコマンドのような参照系コマンドが妥当です。

Azure CLIによるIPアドレス割当変更手順

Azure CLIの具体例として、冒頭にあげた仮想マシンのIPアドレス割当変更手順を紹介します。

まずAzure CLIやポータル画面から、以下の情報を確認しておきます。

  • 仮想マシンが所属しているリソースグループ名
  • 割当を変更したいIPアドレスとそのIPコンフィグ名
  • 割当元/割当先仮想マシンのNIC名

ここでは仮に以下の通りとして手順を紹介します。

  • <resource-group-name>
  • <ip>, <ip-config-name>
  • <nic-name1>, <nic-name2>

IPアドレスを取り外す前に、現在実際にIPアドレスが割り当たっていることを確認します。

  • 仮想マシンのNICに現在割りあたっているIPアドレスを取得
    az network nic ip-config show -g <resource-group-name> --name <ip-config-name> --nic-name <nic-name1>
    

IPアドレスが設定されていることを確認したら、次のコマンドでIPアドレスの割り当てを解除します。

  • 仮想マシンのNICからIPアドレスの割り当てを解除
    az network nic ip-config delete -g <resource-group-name> --nic-name <nic-name1> --name <ip-config-name>
    

IPアドレスの割り当てを解除したら、もう一方の仮想マシンのNICにIPアドレスを割り当てます。

  • 仮想マシンのNICにIPアドレスを追加
    az network nic ip-config create -g <resource-group-name> --nic-name <nic-name2> --name <ip-config-name> --private-ip-address <ip>
    

パラメータの永続化

サービスに組み込む前に対話形式でコマンドを試す場合、az config param-persist onコマンドでパラメータを永続化しておくと便利です。

az config param-persist on
# 一度リソースグループ名を指定して実行する
az network nic list -g <resource-group-name>
# すると、次からは省略できる
az network nic list

参考


TOP
アルファロゴ 株式会社アルファシステムズは、ITサービス事業を展開しています。このブログでは、技術的な取り組みを紹介しています。X(旧Twitter)で更新通知をしています。