検証用途向けに、Azure版Catalyst 9800-CLをAzure Cloud Shellから az
コマンドでデプロイする方法を書き留めます。
作業端末への環境依存を避けたり、実行環境の事前セットアップを省くためにAzure Cloud Shellを利用する方針としています。 また、コマンドの流し込みによって、必要になったタイミングで検証環境をすぐに構築できるようにしたかった背景があります。
構成に関してはCatalyst 9800-CLのシングル構成にしております。
デプロイされるリソースを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 で決め打ちしております。
実質的にデプロイ時の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以上のサポート状況になっています。
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は変動要素のため、コマンド実行時に自動取得するようにしております。
SSHによるLogin
SSHで公開鍵認証による接続試行した際にPasswordが要求されてしまうケースがあるため、本記事ではそのケアを行っております。 詳細に関しては下記の記事を参照してください。
Public IPの情報を取得して、SSH接続を行うコマンドです。
Username: azureuser
でSSH公開鍵認証で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を通知するように設定する必要があります。