My Home NW Lab

逸般の誤家庭のネットワーク

Azure版Catalyst 9800-CLをAzure Cloud Shellから az コマンドでデプロイ

検証用途向けに、Azure版Catalyst 9800-CLをAzure Cloud Shellから az コマンドでデプロイする方法を書き留めます。

作業端末への環境依存を避けたり、実行環境の事前セットアップを省くためにAzure Cloud Shellを利用する方針としています。 また、コマンドの流し込みによって、必要になったタイミングで検証環境をすぐに構築できるようにしたかった背景があります。

構成に関してはCatalyst 9800-CLのシングル構成にしております。

Azure版Catalyst 9800-CLをAzure Cloud Shellから az コマンドでデプロイ

デプロイされるリソースをResource Visualizer上から見ると、下記のようなイメージになります。

Resource Visualizer上の表示

検証時の情報

Azure Cloud Shellの環境に影響を受けると想定されるので、検証時の環境情報を控えておきます。 検証時期に関しては2023年08月頃です。

sysadmin [ ~ ]$ cat /etc/os-release
NAME="Common Base Linux Mariner"
VERSION="2.0.20230630"
ID=mariner
VERSION_ID="2.0"
PRETTY_NAME="CBL-Mariner/Linux"
ANSI_COLOR="1;34"
HOME_URL="https://aka.ms/cbl-mariner"
BUG_REPORT_URL="https://aka.ms/cbl-mariner"
SUPPORT_URL="https://aka.ms/cbl-mariner"
sysadmin [ ~ ]$ 
sysadmin [ ~ ]$ 
sysadmin [ ~ ]$ az version
{
  "azure-cli": "2.51.0",
  "azure-cli-core": "2.51.0",
  "azure-cli-telemetry": "1.1.0",
  "extensions": {
    "ai-examples": "0.2.5",
    "ml": "2.19.1",
    "ssh": "2.0.1"
  }
}
sysadmin [ ~ ]$ 

Catalyst 9800-CLのVersionに関して

本記事執筆時点 (2023年08月頃)において、Azure版のCatalyst 9800-CLで選択可能なVersionが v17.7.1 しかないため、イメージのVersion指定は v17.7.1 で決め打ちしております。

myhomenwlab.hatenablog.com

実質的にデプロイ時のVersion選択肢がないため、デプロイ後に導入予定や検証予定のVersionへのUpgrade作業が発生するので留意してください。

設定手順

SSH鍵の生成

Azure Cloud ShellからSSH接続を行う想定のため、Virtual Machine指定時に利用するSSH鍵を作成します。 作業端末のSSH鍵を流用したいかもしれませんが、できるだけシンプルに手順を流し込めるような状況にしたいので、Azure Cloud Shell環境上にSSH鍵を作成しております。

mkdir -m 700 ~/.ssh

ssh-keygen -t rsa -b 4096 -N '' -C '' -f ~/.ssh/id_rsa

補足ですが、本記事執筆の2023年08月時点では、SSH鍵はRSA且つ2048 bit以上のサポート状況になっています。

learn.microsoft.com

Supported SSH key formats
Azure currently supports SSH protocol 2 (SSH-2) RSA public-private key pairs with a minimum length of 2048 bits. Other key formats such as ED25519 and ECDSA are not supported.

Resource Groupの作成

Locationは (Asia Pacific) Japan East (japaneast) を指定しています。

az group create \
  --location japaneast \
  --name rg-poc

Virtual Networkの作成

az network vnet create \
  --resource-group rg-poc \
  --location japaneast \
  --name vnet-poc \
  --address-prefix 172.31.0.0/16 \
  --subnet-name subnet-poc \
  --subnet-prefixes 172.31.0.0/24

Network Security GroupとRuleの作成

az network nsg create \
  --resource-group rg-poc \
  --location japaneast \
  --name nsg-poc

検証用途だと対象機能で利用するプロトコルを事前に絞るのは難しいので、Network Security Groupの Inbound 向けの通信は全て許可しています。 セキュリティを気にする方はチューニングしてください。

az network nsg rule create \
  --resource-group rg-poc \
  --nsg-name nsg-poc \
  --name AllowAllInBound \
  --priority 100 \
  --access Allow \
  --direction Inbound \
  --protocol '*' \
  --source-address-prefixes '*' \
  --source-port-ranges '*' \
  --destination-address-prefixes '*' \
  --destination-port-ranges '*'

Catalyst 9800-CLの使用許諾への同意

v17.7.1 向けのイメージを対象に使用許諾への同意を行います。 使用許諾を確認して同意する場合のみ実行してください。

az vm image terms accept --urn cisco:cisco-wlc-basic-template:17_7_1:17.07.1

Catalyst 9800-CLの仮想マシンの作成

Custom Dataの設定領域を用いてWeb UI向けのLogin Userを admin で作成するように設定しています。

注記: 不正アクセスを避けるために、Password指定箇所である TODO_CHANGE_PASSWORD は修正してください。

検証用途であるため、インスタンス サイズ (Virtual machine size)には Scale: Small に対応する Standard_F4s_v2 を指定しています。

az vm create \
  --resource-group rg-poc \
  --location japaneast \
  --name wlc01 \
  --security-type Standard \
  --image cisco:cisco-wlc-basic-template:17_7_1:17.07.1 \
  --size Standard_F4s_v2 \
  --authentication-type ssh \
  --admin-username azureuser \
  --ssh-key-values @~/.ssh/id_rsa.pub \
  --public-ip-sku Standard \
  --nsg nsg-poc \
  --vnet-name vnet-poc \
  --subnet subnet-poc \
  --zone 1 \
  --custom-data \
"hostname wlc01
username admin privilege 15 password 0 TODO_CHANGE_PASSWORD
"

Login情報

SSHとWeb UIによるLoginがあります。 Login先となるPublic IPは変動要素のため、コマンド実行時に自動取得するようにしております。

Azure Cloud ShellからのSSHによるLoginと、Web UIのLogin URL取得のイメージ

SSHによるLogin

SSHで公開鍵認証による接続試行した際にPasswordが要求されてしまうケースがあるため、本記事ではそのケアを行っております。 詳細に関しては下記の記事を参照してください。

myhomenwlab.hatenablog.com

Public IPの情報を取得して、SSH接続を行うコマンドです。 Username: azureuserSSH公開鍵認証でLoginします。

ssh -o 'PubkeyAcceptedAlgorithms +ssh-rsa' azureuser@`az vm show --resource-group rg-poc --name wlc01 --show-details | jq -r .publicIps`

-o 'PubkeyAcceptedAlgorithms +ssh-rsa' オプションの利用はセキュリティ レベルが下がるので留意してください。

Web UIによるLogin

Web UIのLogin URLを表示します。

az vm show --resource-group rg-poc --show-details --name wlc01 | jq -r .publicIps | sed 's#\(.*\)#https://\1/#'
Login項目 Login情報 備考
Web UI Login Username admin 変更していなければこの値になります。
Web UI Login Password TODO_CHANGE_PASSWORD 変更していなければこの値になります。

後片づけ: Resource Groupの削除

検証が終わったら不要になったResource Groupを適宜削除してください。

az group delete --name rg-poc

対話形式で本当に削除するか聞かれるので、削除対象の間違いに気を付けて実行してください。

Are you sure you want to perform this operation? (y/n): y

補足情報

実際に無線Access Point (無線AP)がJoinできるようにするためには、Versionを互換性のあるものにUpgradeしたり。 無線AP向けにJoin先のPublic IP Addressを通知するように設定する必要があります。

関連記事