Cisco Smart Licence Using Policy の導入とアクティベーション方法

# 1. Cisco Smart Licence Using Policy 概要
IOSバージョン 16.9.1 以降の Catalyst スイッチシリーズ以降は購入必要となる、
新しいCiscoライセンス管理の仕組み。

## ライセンス種類
- ネットワークライセンス(Advantage /Essential) 
- DNAライセンス(Advantage /Essential)

Advantage ライセンスが機能制限がなく、Essential ライセンスは下位互換ライセンスとなる。
例えば、Netflow機能はEssentialではサポートしていないなどあげられる。

ネットワークライセンスのサポートが切れてしまうと評価機モードに移行し
機能制限されるので、1,3,5,7年のものを適用する場合は注意。

また、DNAライセンスは機能を使わなくても購入が必須である。
使わない場合は最低の3年プランを購入し、ライセンスを更新しないようにすれば良い。

## 適用方法
- CSSMオンライン方式（インターネット経由）
- CSSMオフライン方式（ファイル交換）
- CSLU方式（インターネット経由）
- CSLU方式（ファイル交換）
の四種存在する。（ほかにも古いやつであるっぽいが省略）
今回記載するのはCSSMオンライン方式およびオフライン方式である。

# 2. 前提条件
- バーチャルアカウントからスマートアカウントを作成し、作業者のCiscoアカウント（メールアドレス）に割り当ててもらっていること。
例えば、顧客が持ってるバーチャルアカウントに自分のCiscoアカウントを紐づけてもらっている状態。

- バーチャルアカウントにライセンスが必要数振り込まれていること。
例えば、導入する台数が６台だとしたら、ネットワークライセンス６個、DNAライセンスが６個といった具合。ライセンスの数はCisco Software Centralのインベントリから確認できる。


# 3. CSSMオンライン方式
導入環境にインターネット接続がある場合、永年ではないライセンスを使うときに有効。
Cisco機器にCSSMとの通信設定、経路の設定を行い定期的にサーバーと疎通してもらうやり方。
![スクリーンショット 2023-02-27 113534.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533083/5e60681c-33d1-d417-5b45-55ef4147ac22.png)

## 手順
### 1. 機器に事前設定をする
```
#license boot level network-advantage addon dna-advantage //ライセンスレベルを設定、購入状況次第でadsvantageをessentialに変える。
#reload //↑のコマンドを投入したら必ずenable状態でリロード

#license smart transport smart //方式をtransportに設定
#ip domain lookup source-interface <インターフェース番号 or VLAN> //Ciscoライセンス管理サーバとのDNSの通信経路を指定
#ip http client source-interface <インターフェース番号 or VLAN> //Ciscoライセンス管理サーバとの通信経路を指定
#license smart url default
#ip name-server 8.8.8.8 //環境によって変更
```


### 2. Cisco Software Centralでトークンを発行
Cisco Software Central( https://software.cisco.com )へアクセス
＞ **スマートソフトウェアライセンス**　＞ **インベントリ**
アクションボタンを押してトークンをクリップボードにコピー



### 3. 機器にトークンをインストール
```
#license smart trust idtoken <トークンを貼り付ける> all force
```
上記コマンド投入後、CSSMとの疎通が走る。
名前解決できない、サーバーに到達できない場合はエラーログが流れる。

## 正常に適用できたか確認
適用して５分ほど時間をあけて確認
```
#show license status
~~省略~~
Usage Reporting:
 Last ACK recevied: ＜ここに作業日時＞

Trust Code Installed:
 INSTALLED on <トークンインストール日>
```

出力結果下部に
`Last ACK received:`にCSSMからのACKを受信した時刻が表示されていること
`Trust Code Installed：`にトークンインストール日時が表示されていること

またCSSM上でライセンス数が減っていること、
製品インスタンスが登録されていることを確認できれば完了。

# 4. オフライン方式
導入環境にインターネット接続がない場合に有効。
永年ライセンスであればこちらの運用で問題ない。
![スクリーンショット 2023-02-27 113115.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533083/43f52039-99d9-a1d0-9aa2-9f4ab28e015b.png)

イメージとしては、画像のようにCisco機器とライセンスサーバとの間に担当者が立ち、ファイルの交換作業を行う方式。永年ライセンスであれば、一度作業すれば以降操作する必要はない。

個人的にはこちらの方を推奨したい。なぜなら、オンライン方式より設定が少なく、オンライン方式だと構成が変わり経路が変わった際や、ネットワークトラブル時にエラーログがでたりと色々と面倒だからである。

## 手順
### 1. 機器に事前設定をする
```
#license boot level network-advantage addon dna-advantage //ライセンスレベルを設定、購入状況次第でadsvantageをessentialに変更。
#reload //↑のコマンドを投入したら必ずenable状態でリロード
#license smart transport off //方式をオフラインに変更
```
設定はこれだけ。


### 2. レポーティング作業
今回はTFTPで機器とPC間でファイル交換を実施する例を紹介します。


### 2-1. 機器内にレポートファイルを生成
```
#license smart save usage all file flash:ファイル名 //例)hostname_date_RUM.txt
#dir flash: | inc .txt //生成できたか確認
```

### 2-2. レポートファイルをPCに転送
```
#copy flash://ファイル名 tftp://PCのIPアドレス
```

### 2-3. Cisco Software Centralにレポートファイルをアップロード
Cisco Software Central( https://software.cisco.com )へアクセス
＞ **ライセンスと管理**　＞ **レポート**　＞ **使用状況のアップロード**を選択
＞ レポートファイルを選択し、バーチャルアカウントを選択しファイルをアップロード
＞ ACKファイルをダウンロード
＞ レポートステータスがエラーなしに遷移するとDownloadからACKファイルをダウンロードできるようになる。
（問題ない場合は５分程度でエラーなしと表示される）

### 2-4. ACKファイルを機器へ転送
```
copy tftp://PCのIPアドレス/ファイル名 flash:
license smart import flash:ACKファイル名
```
import Data Successfulとでたら成功

### 2-5. 正常に適用できたか確認
```
#show license status
~~~~
Usage Reporting:
 Last ACK recevied: ＜ここに作業日時＞
```
出力結果下部のLast ACK：が作業日と同じであれば成功。
また、Cisco Software Central上でライセンス数が減っていること、製品インスタンスが登録されていることが確認できれば完了。

# 5. QA・トラブルシュート(オンライン/オフライン)
■オンライン/オフライン共通
Q、ライセンス適用、トークン発行は何回してもいいの？（失敗しても大丈夫？）
A、大丈夫です。制限やペナルティは発生しません。

Q、スタック構成の場合、ライセンス数はどうなるか
A、物理的な台数の数だけ必要です。例えば、2台でスタックを組んでいる場合のライセンス必要数は2個。設定するときは片方のスイッチで設定すると、Cisco Software Central上で2個消費される。

:::note warn
このとき、バーチャルアカウントに振り込まれたライセンス数が不足した状態でアクティベーションを行うと、Cisco Software Central上でライセンス数が赤字で-1と表示されます。確認事項と対処方法は以下の通りです。

- 確認事項
**Smart Software Licensing** > **Activity** > **Event Log**にて、
バーチャルアカウントにライセンスが振り込まれている以下のログが存在しないことを確認。
`new "ライセンス名"  licenses were added to the Virtual Account "バーチャルアカウント名"`

- 対処方法

ライセンスは24~96hでライセンスに振り込まれる（らしい）ので待つか

それか、Ciscoに問い合わせる。（以下から連絡したことはないが多分ここ）
https://www.cisco.com/c/ja_jp/services/technical.html
:::

■オンライン方式
Q、設定を入れても以下のようなエラーが定期的にでる。
```
%SMART_LIC-3-COMM_FAILED: Communications failure with the Cisco Smart Software Manager (CSSM) : Unable to resolve server hostname/domain name 
```
A、CSSMサーバとの名前解決ができず繋がらないエラーログ。ドメインやDNSの設定に問題があります。
CSSMと接続する用のポートの設定など通信経路に問題がないかも確認してください。

■オフライン方式
Q、Cisco Software Central上でACKファイルがダウンロードできるようにならない
A、以下の原因が考えられるので確認してください。
- Cisco機器内にACKファイルとレポートファイルが複数存在している → 削除してください、同名ファイルも削除してください。
- 製品インスタンスが既に登録されている → 削除してください
- CSSM上で同じファイル名のレポートファイルをアップしていないか（恐らく失敗の原因）
- それでもダメな場合、何度かアップロードを試すか時間を空けて結果を確認してください。

# 6. おわりに
　Cisco機器で使用する機能、導入する環境、運用方法によってどれが最適か選ぶ必要があり、初見プレイだとかなり困惑しました。比較的新しいライセンス認証方法なため、社内でナレッジを持つ人間も少なく、日本語解説記事がほとんどなく、公式リファレンスも正直見にくくて八方塞がりでした。
トライアンドエラーで幸運にもうまくいったから良かったものの、今後被害者を増やさないためにもこの記事は供養したいと思います。