
[!] この記事は公開されてから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 AzureStackUseraz cloud update --profile 2019-03-01-hybrid
--endpoint-resource-manager
にはAzure StackのResource ManagerエンドポイントURLを指定する- https://management ⧉.
. / という形式となる - 具体値はAzure Stack管理者に確認すること
- https://management ⧉.
--profile
の引数もAzure Stack環境ごとに異なり、間違うと動かないコマンドがある- 次のコマンドで予め利用可能なプロファイルを確認できる
Terminal window 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アドレスを取得
Terminal window az network nic ip-config show -g <resource-group-name> --name <ip-config-name> --nic-name <nic-name1>
IPアドレスが設定されていることを確認したら、次のコマンドでIPアドレスの割り当てを解除します。
- 仮想マシンのNICからIPアドレスの割り当てを解除
Terminal window az network nic ip-config delete -g <resource-group-name> --nic-name <nic-name1> --name <ip-config-name>
IPアドレスの割り当てを解除したら、もう一方の仮想マシンのNICにIPアドレスを割り当てます。
- 仮想マシンのNICにIPアドレスを追加
Terminal window 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
参考
- Azure CLI概要
https://docs.microsoft.com/ja-jp/cli/azure/ ⧉ - Azure CLIを使用してサインインする
https://docs.microsoft.com/ja-jp/cli/azure/authenticate-azure-cli ⧉ - Azure Stackへの接続
https://docs.microsoft.com/ja-jp/azure-stack/user/azure-stack-version-profiles-azurecli2?view=azs-2102&tabs=ad-win ⧉ - パラメータの永続化
https://docs.microsoft.com/ja-jp/cli/azure/param-persist-tutorial?tabs=azure-cli ⧉