My Home NW Lab

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

Catalyst 8000V (Public Cloud版)の Section: License によるライセンス適用

Public Cloud版のCatalyst 8000Vでは、User Dataに Section: License を記述して適用するライセンス種別を指定できます。

Section: License の書式

User Dataの Section: License の書式は下記のようになっております。

Section: License
TechPackage:tech_level

tech_level には下記のライセンス種別から使用するものに置き換えます。

tech_level
network-advantage
network-essentials
network-premier

例として network-premier を指定する場合は下記のように記述します。

Section: License
TechPackage:network-premier

書式の注意点ですが TechPackagetech_level の間はスペースを入れないでください。

ドキュメント上の情報

ドキュメント上では ax, security, appx, ipbase を指定する旨の記載があります。しかし、CSR1000V時代のライセンス種別の情報のようで筆者が検証しても動作しませんでした。

www.cisco.com Configuring the License property セクションに Section: License の記述があります。

Cisco Catalyst 8000V Edge Software Installation And Configuration Guide - Day 0 Configuration (2022年12月18日時点)

ドキュメントがアップデートされていない可能性を疑って、Catalyst 8000Vの license boot level コマンドのオプションに置き換えて、ライセンスの適用確認を実機で検証しました。

Catalyst 8000VのSection: License

license boot level コマンドのオプションですが、CSR1000Vのオプションがドキュメントに記載されていた ax, security, appx, ipbase と同じである点と、Catalyst 8000VとCSR1000Vでそのオプションが異なるのは実機で確認しております。

license boot level コマンドの比較

Catalyst 8000Vの license boot level コマンド

C8000V(config)#license boot level ?
  network-advantage   License Level Network-Advantage
  network-essentials  License Level Network-Essentials
  network-premier     License Level Network-Premier

C8000V(config)#license boot level

CSR1000Vの license boot level コマンド

CSR1000V(config)#license boot level ?
  appx      Enable appx license
  ax        Enable ax(ipb+sec+appx) license
  ipbase    Enable ipbase license
  security  Enable security license

CSR1000V(config)#license boot level 

Section: License の各指定パターン

Section: License の各ライセンス種別の指定パターンを相違点の確認用に記載します。

show running-config ではライセンス反映の判別が行えなかったため、show version でライセンス反映の確認を行っております。

Section: License の未記述時 (ライセンス種別の指定なし)

比較のために Section: License を記述しなかった場合の情報を記載します。

License Level:Addon License Level: にライセンスが反映されてないのを確認できます。

c8000v01#show version | include License
licensed under the GNU General Public License ("GPL") Version 2.0.  The
documentation or "License Notice" file accompanying the IOS-XE software,
License Level: 
License Type: Perpetual
Addon License Level: 
Addon License Type: Subscription
c8000v01#

network-essentials の指定時

User Dataに network-essentials を指定した際の情報です。

Section: License
TechPackage:network-essentials

License Level:Addon License Level: に network-essentials のライセンスが反映されているのが確認できます。

c8000v01#show version | include License
licensed under the GNU General Public License ("GPL") Version 2.0.  The
documentation or "License Notice" file accompanying the IOS-XE software,
License Level: network-essentials
License Type: Perpetual
Addon License Level: dna-essentials
Addon License Type: Subscription
c8000v01#

network-advantage の指定時

User Dataに network-advantage を指定した際の情報です。

Section: License
TechPackage:network-advantage

License Level:Addon License Level: に network-advantage のライセンスが反映されているのが確認できます。

c8000v01#show version | include License
licensed under the GNU General Public License ("GPL") Version 2.0.  The
documentation or "License Notice" file accompanying the IOS-XE software,
License Level: network-advantage
License Type: Perpetual
Addon License Level: dna-advantage
Addon License Type: Subscription
c8000v01#

network-premier の指定時

User Dataに network-premier を指定した際の情報です。

Section: License
TechPackage:network-premier

License Level:Addon License Level: に network-premier のライセンスが反映されているのが確認できます。

c8000v01#show version | include License
licensed under the GNU General Public License ("GPL") Version 2.0.  The
documentation or "License Notice" file accompanying the IOS-XE software,
License Level: network-premier
License Type: Perpetual
Addon License Level: dna-premier
Addon License Type: Subscription
c8000v01#

検証時の情報

検証時の環境情報を控えておきます。

項目 情報
Public Cloud AWS
AMI Cisco Catalyst 8000V Edge Software - BYOL
Version 17.09.01a

Terraformのコード

検証時はUser Dataの頻繁な書き換えが発生するため、Terraformでシングル構成のCatalyst 8000Vをデプロイしてライセンス反映の確認を行っておりました。

検証時の構成図

参考までにTerraformのコードを掲載します。

  • Catalyst 8000VにログインするためのSSH公開鍵 ( "ssh-rsa ABCDEF...." の部分)をご自身のものに置き換えてください。

  • コード内では TechPackage:network-premier を指定しているため適宜修正してください。

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.0"
    }
  }
}

provider "aws" {
  region = "ap-northeast-1"
  default_tags {
    tags = {
      ENV = "TEST"
    }
  }
}

resource "aws_key_pair" "keypair" {
  key_name   = "keypair_for_terraform"
  # TODO: Change Public Key
  public_key = "ssh-rsa ABCDEF...."
}

data "aws_ami" "c8000v" {
  most_recent = true
  owners      = ["aws-marketplace"]

  filter {
    name   = "name"
    values = ["Cisco-C8K-*"]
  }

  filter {
    name   = "description"
    values = ["Cisco-C8K-.17.09.01a"]
  }

  filter {
    name   = "product-code"
    values = ["3ycwqehancx46bkpb3xkifiz5"]
  }

  filter {
    name   = "state"
    values = ["available"]
  }
}

resource "aws_vpc" "myvpc" {
  cidr_block           = "10.253.0.0/16"
  enable_dns_hostnames = true
  tags = {
    Name = "myvpc"
  }
}

resource "aws_subnet" "subnet-public-1a" {
  vpc_id                  = aws_vpc.myvpc.id
  cidr_block              = "10.253.0.0/24"
  availability_zone       = "ap-northeast-1a"
  map_public_ip_on_launch = true
  tags = {
    Name = "subnet-public-1a"
  }
}

resource "aws_internet_gateway" "igw" {
  vpc_id = aws_vpc.myvpc.id
}

resource "aws_route_table" "rt-public" {
  vpc_id = aws_vpc.myvpc.id
  route {
    cidr_block = "0.0.0.0/0"
    gateway_id = aws_internet_gateway.igw.id
  }
  tags = {
    Name = "rt-public"
  }
}

resource "aws_route_table_association" "rtassoc-public-1a" {
  subnet_id      = aws_subnet.subnet-public-1a.id
  route_table_id = aws_route_table.rt-public.id
}

resource "aws_security_group" "secgrp-public" {
  name        = "secgrp-public"
  description = "For Public Subnet"
  vpc_id      = aws_vpc.myvpc.id
  ingress {
    description = "SSH"
    from_port   = 0
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
  tags = {
    Name = "secgrp-public"
  }
}

resource "aws_network_interface" "eni-c8000v01-gi1" {
  subnet_id         = aws_subnet.subnet-public-1a.id
  security_groups   = [aws_security_group.secgrp-public.id]
  source_dest_check = false
  tags = {
    Name = "eni-c8000v01-gi1"
  }
}

resource "aws_eip" "eip-c8000v01" {
  vpc               = true
  network_interface = aws_network_interface.eni-c8000v01-gi1.id
  depends_on        = [aws_internet_gateway.igw]
  tags = {
    Name = "eip-c8000v01"
  }
}

resource "aws_instance" "c8000v01" {
  ami           = data.aws_ami.c8000v.image_id
  instance_type = "t3.medium"
  key_name      = aws_key_pair.keypair.id
  network_interface {
    network_interface_id = aws_network_interface.eni-c8000v01-gi1.id
    device_index         = 0
  }
  user_data = <<EOF
Section: License
TechPackage:network-premier

Section: IOS configuration
hostname c8000v01

EOF
  tags = {
    Name = "c8000v01"
  }
}

Cisco Communityの記事のURL短縮化

Cisco Communityの記事のURLは、「/t5/」「/ta-p/」の間の文字列を「-」(ハイフン)に置き換えるとURLの短縮化が可能です。

Cisco Communityの記事のURL短縮化

活用例

Cisco CommunityにはCisco Employeeの方が書き込んだ情報があるため、顧客に提示する資料などに参考情報として記載する場合があるかと存じます。 一例となりますが、ExcelファイルのQA管理表に情報源として記載するケースで、セル一杯に文字が溢れると視認性が悪くなるのでURLの短縮化を活用すると良いかもしれません。

QA管理表でのURL記載イメージ - URL短縮化前 (Before)

QA管理表でのURL記載イメージ - URL短縮化前 (After)

イメージ図で記載したCisco Communityの記事は下記になります。

SD-WAN: Cisco SD-WAN ドキュメントリンク集 - Cisco Community
https://community.cisco.com/t5/-/-/ta-p/4666713

URL短縮化前後の実例

実際のURL短縮化前後 (Before/After)の実例です。

URLの短縮化前 (Before)

https://community.cisco.com/t5/ヘルプ-ドキュメント/シスココミュニティの歩き方/ta-p/4021064

URLの短縮化後 (Ater)

https://community.cisco.com/t5/-/-/ta-p/4021064

情報源

情報源として シスココミュニティの歩き方 - Cisco Community に掲載されているPDF資料のプレビュー ページのURLを記載します。

https://community.cisco.com/t5/-/-/ta-p/4021064?attachment-id=186435

スライド 44: シスココミュニティ 小技集 に掲載されています。下記にスライドの該当記述を引用します。

• /t5/と/ta-p/間の日本語部分は2バイト文字で表示されますが、「-」など任意文字に書き換えても URLにはアクセス可能です。長いURLを短くしたいときに便利です。なお、当実装は予告なしに今後変わる可能性があります

元URL:
https://community.cisco.com/t5/tac-tips-ドキュメント/tac-tips-シスコ製品へのcve-共通脆弱性識別子-による影響の確認方法について/ta-p/3835583

変更後URL:
https://community.cisco.com/t5/-/-/ta-p/3835583

情報源によると「-」(ハイフン)以外にも任意の文字に置き換えが可能なようですが、URLを短く見やすくするのが活用の用途であって意味不明な文字列を書く意義もないので「-」(ハイフン)が使用されるのを筆者はよく目にします。

TerraformからCatalyst 8000V (AWS版)の最新AMI IDの取得

TerraformからCatalyst 8000V (AWS版)の最新AMI IDを取得するための情報を整理しました。 特に filter 条件の指定に必要な情報に焦点を当てております。

2022年12月頃の Latest Version: 17.09.01a をベースに調査しております。

AWS MarketplaceのCatalyst 8000Vの情報

AWS Marketplaceには何種類かのCatalyst 8000Vが登録されておりますが主に候補となる3種類に絞りました。

AWS MarketplaceのCatalyst 8000V

本記事内で取り扱うCatalyst 8000Vは下記の3種類になります。

BYOL は Bring Your Own License の略でライセンス持ち込み型です。
PAYG は Pay-As-You-Go の略でライセンスの持ち込みは不要の従量課金型です。Cisco TAC support servicesは含まれていないため別途契約が必要になります。

Catalyst 8000VのAMIの情報

Catalyst 8000VのAMI IDを特定するための情報を整理します。

製品名 product_code_id Description (一例) AMI name (一例)
Cisco Catalyst 8000V Edge Software - BYOL 3ycwqehancx46bkpb3xkifiz5 Cisco-C8K-.17.09.01a Cisco-C8K-17.09.01a-42cb6e93-8d9d-490b-a73c-e3e56077ffd1
Cisco Catalyst 8000V Edge Software - PAYG - DNA Essentials k585h9fyh5prlazwh3vb0yh3 Cisco-C8K-.17.09.01a Cisco-C8K-PAYG-ESS-17.09.01a-0973be0f-17dc-43c1-9677-13348bbfe587
Cisco Catalyst 8000V Edge Software - PAYG - DNA Advantage cmhzse1i97ex4pkmb26dxhz2j Cisco-C8K-.17.09.01a Cisco-C8K-PAYG-ADV-17.09.01a-d54057d8-928f-4bf1-b2f7-15b344cec0cb

Catalyst 8000VのAMI情報における製品種別の特定

補足: PAYG版のサブスクライブ時のエラー

PAYG版のDNA EssentialsとDNA Advantageは、下記のエラーが表示されて筆者の場合はサブスクライブが出来ませんでした。

The seller has not made this product available in the geo location associated with your customer account.

PAYG版のサブスクライブ時のエラー

Cisco ASAvの情報ではありますが、下記に該当している可能性があります。

community.cisco.com

以下エラーでサブスクライブができない件についてコメントさせていただきます。

Error : The seller has not made this product available in the geo location associated with your customer account.

残念ながら、税制上の理由で、日本のアカウントのお持ちの方は、現在、ASAv Standard Package の新規サブスクライブが許可されてません。

そのため、新規サブスクライブ時は当制限のない ASAv BYOL で代用して頂くか、もしくは、グローバル企業に勤務されている方は ASAv Standard Package の利用が可能な場合がございます。

結局のところ筆者はPAYG版のデプロイは行えませんでしたが、filter 条件にBYOL版を指定する際にPAYG版の情報が引っかからないようにするために本記事では比較情報としてPAYG版の情報も掲載しております。

AMIの product_code_id の確認方法

BYOL版の Cisco Catalyst 8000V Edge Software - BYOL に関しては実際にデプロイして Products codes (product_code_type + product_code_id) の情報より確認しました。

Cisco Catalyst 8000V Edge Software - BYOL の Products codes

PAYG版の Cisco Catalyst 8000V Edge Software - PAYG - DNA EssentialsCisco Catalyst 8000V Edge Software - PAYG - DNA Advantage に関しては、AWS ConsoleのEC2の設定画面よりメニュー: Images > AMIs から Cisco-C8K-. で検索して該当のものを特定しました。

EC2の設定画面のメニュー: Images > AMIs

また、AWS Marketplaceの各製品のHTMLソース コードを見ると、offerARN の情報の一部に product_code_id が含まれていたので合致するか確認しております。HTMLソース コードより確認する方法は、筆者が独自に確認しただけであり、正式な方法ではないと思われるので注意してください。

"offerARN":"arn:aws:catalog:us-east-1::offer/3ycwqehancx46bkpb3xkifiz5/version/1",

AWS MarketplaceのHTMLソース コードからの「product_code_id」の類推

TerraformのCatalyst 8000VのAMI情報取得コード

TerraformでCatalyst 8000Vの最新AMI情報を取得するためのサンプル コードを掲載します。

まず前提情報ですが、製品種別を特定するために、product_code_idproduct_code_type の要素によって成り立っている product_codesfilter の条件指定に用いています。

      + product_codes         = [
          + {
              + product_code_id   = "3ycwqehancx46bkpb3xkifiz5"
              + product_code_type = "marketplace"
            },
        ]

TerraformでのCatalyst 8000Vの製品種別指定

AMI IDはRegionによって変わるので注意してください。本例ではRegionに ap-northeast-1 (Tokyo) を指定しています。 本サンプル コードでは3種類のAMIの情報を順に出力します。

# hashicorp/aws | Terraform Registry
# https://registry.terraform.io/providers/hashicorp/aws/latest
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.0"
    }
  }
}

provider "aws" {
  region = "ap-northeast-1"
}

# AWS Marketplace: Cisco Catalyst 8000V Edge Software - BYOL
# https://aws.amazon.com/marketplace/pp/prodview-rohvq2cjd4ccg
data "aws_ami" "c8000v-byol" {
  most_recent = true
  owners      = ["aws-marketplace"]

  filter {
    name   = "name"
    values = ["Cisco-C8K-*"]
  }

  filter {
    name   = "product-code"
    values = ["3ycwqehancx46bkpb3xkifiz5"]
  }

  filter {
    name   = "state"
    values = ["available"]
  }
}

# AWS Marketplace: Cisco Catalyst 8000V Edge Software - PAYG - DNA Essentials
# https://aws.amazon.com/marketplace/pp/prodview-o4o5hbn3kjyym
data "aws_ami" "c8000v-payg-ess" {
  most_recent = true
  owners      = ["aws-marketplace"]

  filter {
    name   = "name"
    values = ["Cisco-C8K-PAYG-ESS-*"]
  }

  filter {
    name   = "product-code"
    values = ["k585h9fyh5prlazwh3vb0yh3"]
  }

  filter {
    name   = "state"
    values = ["available"]
  }
}

# AWS Marketplace: Cisco Catalyst 8000V Edge Software - PAYG - DNA Advantage
# https://aws.amazon.com/marketplace/pp/prodview-cjzny6dzcbrom
data "aws_ami" "c8000v-payg-adv" {
  most_recent = true
  owners      = ["aws-marketplace"]

  filter {
    name   = "name"
    values = ["Cisco-C8K-PAYG-ADV-*"]
  }

  filter {
    name   = "product-code"
    values = ["cmhzse1i97ex4pkmb26dxhz2j"]
  }

  filter {
    name   = "state"
    values = ["available"]
  }
}

output "c8000v-byol-ami-info" {
  description = "Cisco Catalyst 8000V Edge Software - BYOL"
  value       = data.aws_ami.c8000v-byol
}

output "c8000v-payg-ess-ami-info" {
  description = "Cisco Catalyst 8000V Edge Software - PAYG - DNA Essentials"
  value       = data.aws_ami.c8000v-payg-ess
}

output "c8000v-payg-adv-ami-info" {
  description = "Cisco Catalyst 8000V Edge Software - PAYG - DNA Advantage"
  value       = data.aws_ami.c8000v-payg-adv
}

筆者はTerraformの実行環境をAWS Cloud9に用意して確認しました。 上述のコードを main.tf ファイルとして保存して下記のコマンドで実行しております。

terraform init

terraform plan

AWS Cloud9上での実行例

Terraformのサンプル コードの出力例

サンプル コードを terraform plan で実行した際の出力例を掲載します。

ec2-user:~/environment $ terraform plan
data.aws_ami.c8000v-payg-ess: Reading...
data.aws_ami.c8000v-payg-adv: Reading...
data.aws_ami.c8000v-byol: Reading...
data.aws_ami.c8000v-payg-adv: Read complete after 1s [id=ami-04e8a322004495372]
data.aws_ami.c8000v-payg-ess: Read complete after 1s [id=ami-0007e399b265b580b]
data.aws_ami.c8000v-byol: Read complete after 1s [id=ami-0a6f4f867117f37c4]

Changes to Outputs:
  + c8000v-byol-ami-info     = {
      + architecture          = "x86_64"
      + arn                   = "arn:aws:ec2:ap-northeast-1::image/ami-0a6f4f867117f37c4"
      + block_device_mappings = [
          + {
              + device_name  = "/dev/xvda"
              + ebs          = {
                  + "delete_on_termination" = "true"
                  + "encrypted"             = "false"
                  + "iops"                  = "0"
                  + "snapshot_id"           = "snap-0a03c87047e46d19e"
                  + "throughput"            = "0"
                  + "volume_size"           = "16"
                  + "volume_type"           = "gp2"
                }
              + no_device    = ""
              + virtual_name = ""
            },
        ]
      + boot_mode             = ""
      + creation_date         = "2022-09-12T20:05:47.000Z"
      + deprecation_time      = "2024-09-12T20:05:47.000Z"
      + description           = "Cisco-C8K-.17.09.01a"
      + ena_support           = true
      + executable_users      = null
      + filter                = [
          + {
              + name   = "name"
              + values = [
                  + "Cisco-C8K-*",
                ]
            },
          + {
              + name   = "product-code"
              + values = [
                  + "3ycwqehancx46bkpb3xkifiz5",
                ]
            },
          + {
              + name   = "state"
              + values = [
                  + "available",
                ]
            },
        ]
      + hypervisor            = "xen"
      + id                    = "ami-0a6f4f867117f37c4"
      + image_id              = "ami-0a6f4f867117f37c4"
      + image_location        = "aws-marketplace/Cisco-C8K-17.09.01a-42cb6e93-8d9d-490b-a73c-e3e56077ffd1"
      + image_owner_alias     = "aws-marketplace"
      + image_type            = "machine"
      + imds_support          = ""
      + include_deprecated    = false
      + kernel_id             = ""
      + most_recent           = true
      + name                  = "Cisco-C8K-17.09.01a-42cb6e93-8d9d-490b-a73c-e3e56077ffd1"
      + name_regex            = null
      + owner_id              = "679593333241"
      + owners                = [
          + "aws-marketplace",
        ]
      + platform              = ""
      + platform_details      = "Linux/UNIX"
      + product_codes         = [
          + {
              + product_code_id   = "3ycwqehancx46bkpb3xkifiz5"
              + product_code_type = "marketplace"
            },
        ]
      + public                = true
      + ramdisk_id            = ""
      + root_device_name      = "/dev/xvda"
      + root_device_type      = "ebs"
      + root_snapshot_id      = "snap-0a03c87047e46d19e"
      + sriov_net_support     = "simple"
      + state                 = "available"
      + state_reason          = {
          + "code"    = "UNSET"
          + "message" = "UNSET"
        }
      + tags                  = {}
      + timeouts              = null
      + tpm_support           = ""
      + usage_operation       = "RunInstances"
      + virtualization_type   = "hvm"
    }
  + c8000v-payg-adv-ami-info = {
      + architecture          = "x86_64"
      + arn                   = "arn:aws:ec2:ap-northeast-1::image/ami-04e8a322004495372"
      + block_device_mappings = [
          + {
              + device_name  = "/dev/xvda"
              + ebs          = {
                  + "delete_on_termination" = "true"
                  + "encrypted"             = "false"
                  + "iops"                  = "0"
                  + "snapshot_id"           = "snap-01c52d7b01334c29e"
                  + "throughput"            = "0"
                  + "volume_size"           = "16"
                  + "volume_type"           = "gp2"
                }
              + no_device    = ""
              + virtual_name = ""
            },
        ]
      + boot_mode             = ""
      + creation_date         = "2022-09-12T19:51:43.000Z"
      + deprecation_time      = "2024-09-12T19:51:43.000Z"
      + description           = "Cisco-C8K-.17.09.01a"
      + ena_support           = true
      + executable_users      = null
      + filter                = [
          + {
              + name   = "name"
              + values = [
                  + "Cisco-C8K-PAYG-ADV-*",
                ]
            },
          + {
              + name   = "product-code"
              + values = [
                  + "cmhzse1i97ex4pkmb26dxhz2j",
                ]
            },
          + {
              + name   = "state"
              + values = [
                  + "available",
                ]
            },
        ]
      + hypervisor            = "xen"
      + id                    = "ami-04e8a322004495372"
      + image_id              = "ami-04e8a322004495372"
      + image_location        = "aws-marketplace/Cisco-C8K-PAYG-ADV-17.09.01a-d54057d8-928f-4bf1-b2f7-15b344cec0cb"
      + image_owner_alias     = "aws-marketplace"
      + image_type            = "machine"
      + imds_support          = ""
      + include_deprecated    = false
      + kernel_id             = ""
      + most_recent           = true
      + name                  = "Cisco-C8K-PAYG-ADV-17.09.01a-d54057d8-928f-4bf1-b2f7-15b344cec0cb"
      + name_regex            = null
      + owner_id              = "679593333241"
      + owners                = [
          + "aws-marketplace",
        ]
      + platform              = ""
      + platform_details      = "Linux/UNIX"
      + product_codes         = [
          + {
              + product_code_id   = "cmhzse1i97ex4pkmb26dxhz2j"
              + product_code_type = "marketplace"
            },
        ]
      + public                = true
      + ramdisk_id            = ""
      + root_device_name      = "/dev/xvda"
      + root_device_type      = "ebs"
      + root_snapshot_id      = "snap-01c52d7b01334c29e"
      + sriov_net_support     = "simple"
      + state                 = "available"
      + state_reason          = {
          + "code"    = "UNSET"
          + "message" = "UNSET"
        }
      + tags                  = {}
      + timeouts              = null
      + tpm_support           = ""
      + usage_operation       = "RunInstances"
      + virtualization_type   = "hvm"
    }
  + c8000v-payg-ess-ami-info = {
      + architecture          = "x86_64"
      + arn                   = "arn:aws:ec2:ap-northeast-1::image/ami-0007e399b265b580b"
      + block_device_mappings = [
          + {
              + device_name  = "/dev/xvda"
              + ebs          = {
                  + "delete_on_termination" = "true"
                  + "encrypted"             = "false"
                  + "iops"                  = "0"
                  + "snapshot_id"           = "snap-01303431805713aa2"
                  + "throughput"            = "0"
                  + "volume_size"           = "16"
                  + "volume_type"           = "gp2"
                }
              + no_device    = ""
              + virtual_name = ""
            },
        ]
      + boot_mode             = ""
      + creation_date         = "2022-09-12T19:58:48.000Z"
      + deprecation_time      = "2024-09-12T19:58:48.000Z"
      + description           = "Cisco-C8K-.17.09.01a"
      + ena_support           = true
      + executable_users      = null
      + filter                = [
          + {
              + name   = "name"
              + values = [
                  + "Cisco-C8K-PAYG-ESS-*",
                ]
            },
          + {
              + name   = "product-code"
              + values = [
                  + "k585h9fyh5prlazwh3vb0yh3",
                ]
            },
          + {
              + name   = "state"
              + values = [
                  + "available",
                ]
            },
        ]
      + hypervisor            = "xen"
      + id                    = "ami-0007e399b265b580b"
      + image_id              = "ami-0007e399b265b580b"
      + image_location        = "aws-marketplace/Cisco-C8K-PAYG-ESS-17.09.01a-0973be0f-17dc-43c1-9677-13348bbfe587"
      + image_owner_alias     = "aws-marketplace"
      + image_type            = "machine"
      + imds_support          = ""
      + include_deprecated    = false
      + kernel_id             = ""
      + most_recent           = true
      + name                  = "Cisco-C8K-PAYG-ESS-17.09.01a-0973be0f-17dc-43c1-9677-13348bbfe587"
      + name_regex            = null
      + owner_id              = "679593333241"
      + owners                = [
          + "aws-marketplace",
        ]
      + platform              = ""
      + platform_details      = "Linux/UNIX"
      + product_codes         = [
          + {
              + product_code_id   = "k585h9fyh5prlazwh3vb0yh3"
              + product_code_type = "marketplace"
            },
        ]
      + public                = true
      + ramdisk_id            = ""
      + root_device_name      = "/dev/xvda"
      + root_device_type      = "ebs"
      + root_snapshot_id      = "snap-01303431805713aa2"
      + sriov_net_support     = "simple"
      + state                 = "available"
      + state_reason          = {
          + "code"    = "UNSET"
          + "message" = "UNSET"
        }
      + tags                  = {}
      + timeouts              = null
      + tpm_support           = ""
      + usage_operation       = "RunInstances"
      + virtualization_type   = "hvm"
    }

You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.

───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.
ec2-user:~/environment $ 

image_id の値より、AMI IDが確認できます。 出力例の内容を整理すると下記の表のようになっております。

製品名 Version: 17.09.01a のAMI ID
Cisco Catalyst 8000V Edge Software - BYOL ami-0a6f4f867117f37c4 (Region: ap-northeast-1)
Cisco Catalyst 8000V Edge Software - PAYG - DNA Essentials ami-04e8a322004495372 (Region: ap-northeast-1)
Cisco Catalyst 8000V Edge Software - PAYG - DNA Advantage ami-0007e399b265b580b (Region: ap-northeast-1)

関連ドキュメント

BIG-IP Forward Proxy構成 (SSLO使用時)のv16.1.1にてSSL Profileの「-vht」と「-vhf」が統合

v16.1.1以前のBIG-IP Forward Proxy構成でSSLO (SSL Orchestrator)からデプロイを行っていると、名称の接尾辞に「-vht」と「-vhf」を持つSSL Client ProfileとSSL Server Profileの設定が作成され、設定条件によってVirtual Serverに適用されるProfileが異なりました。

しかし、v16.1.1にて「-vht」と「-vhf」と分かれていたProfileがSSL ClientとSSL Server向け各一つずつに統合されるようになりました。

v16.1.1以前では下記のような設定条件がありました。

  • 接尾辞: -vht (Verified Handshake True)
    Bypass on Handshake Alert もしくは Bypass on Client Certificate Failure にチェックが入っている場合にVirtual Serverに適用されます。Bypass系設定のいずれかにチェックが入っている場合のためOR条件になります。
    Verified Handshake の設定が EnabledSSL Client/Server Profileが適用されます。

  • 接尾辞: -vhf (Verified Handshake False)
    Bypass on Handshake AlertBypass on Client Certificate Failure の両方にチェックが入っていない場合にVirtual Serverに適用されます。
    Verified Handshake の設定が DisabledSSL Client/Server Profileが適用されます。

筆者が確認した限りでは設定条件などがドキュメントに明記されていなかったため、SSLO v15.1.0-7.5.2のiApps LXソース コードを解析しながらBIG-IP v15.1.1で実際に検証して確認しております。

BIG-IP SSLOの関連設定

メニュー: SSL Orchestrator > Configuration でのデプロイ時に、SSL Configuration の画面にて Advanced Setting を表示させるとBypass系設定が表示されます。 v16.1.1以前ではBypass系設定のチェック次第で、Virtual Serverに適用されるSSL Client/Server Profileが異なりました。

v16.1.1以前のBypass系設定時の挙動

v16.1.1以前とv16.1.1以上のiApps LX画面の比較

BIG-IP SSLOが内部的に利用しているiApps LXより生成される設定群の比較画面を掲載します。iApps LXの設定群の表示の仕方は下記の記事を参考にしてください。

myhomenwlab.hatenablog.com

v16.1.1以前での「-vht」と「-vhf」のSSL Client/Server Profile

v16.1.1以上でのSSL Client/Server Profileの統合

フォントの表示が小さいと t (Trueの意)と f (Falseの意)の文字が潰れて判別がつきにくいので、実際の画面で見る際は見間違わないように注意してください。

本仕様にまつわる筆者の経験談

v16.1.1以前ではVirtual Server適用されているSSL Client/Server Profileを意識する必要があったため、管理面や運用面が複雑になりとても煩わしい仕様でした。 「-vht」と「-vhf」のどちらか一方しか適用されないにも関わらず設定自体は両方ともに存在するため、「t」と「f」の文字を見分けながらどちらの設定が適用されているかを把握するのは厄介でしかありません。 また、筆者がPoC (Proof of Concept)を行っていた際は、限られたプロジェクト期間内で設定条件を悠長に調べている時間がなかったので、SSL Client/Server Profileに対して設定変更を行う際は「-vht」と「-vhf」の両設定を対象とするような強引な回避策を取るケースもありました。

今回の仕様変更によってその煩わしさが改善されましたが、悪い表現をすると過去のナレッジが役に立たなくなり、知見のアップデートが必要になったとも言えます。 実際、筆者は本仕様を確認するために当時 (v16.1.1以前)はiApps LXソース コードの解析する羽目になり、仕様確認にとても労力がかかりました。 そして、最近になって本件の記事を書くにあたってv17.0.0でソース コードの解析をし直していると該当コードが無くなっており、Release Notesで仕様変更が入ったのを知りました。

SSLOのモジュールは主にiApps LXによって実現されているためBIG-IPの標準機能から外れている実情があり、本件のようにiApps LXのコード内レベルで挙動変更が行われる可能性が高くなるのを記憶に留めておいてください。

関連ドキュメント

本仕様変更はRelease Notesに記載があります。

AskF5 | Release Notes: F5 SSL Orchestrator Release Notes version 16.1.1-9.1 https://techdocs.f5.com/kb/en-us/products/ssl-orchestrator/releasenotes/product/relnote-ssl-orchestrator-16-1-1-iapp-9-1.html

Verified Accept SSL profile optimization SSL Orchestrator now generates a single SSL profile instead of two profiles for Verified Handshake True (vht) and Verified Handshake False (vhf), greatly simplifying the SSL Orchestrator-generated configurations. By default, the verified Handshake will be enabled for Outbound traffic and disabled for Inbound traffic.

Merakiアカウント (Non-SAML User)の多要素認証の必須化 (2022年12月頃)

2022年12月頃より、Meraki DashboardMerakiアカウント (Non-SAML User)でログインする際に、多要素認証の必須化が行われました。 また、reCAPTCHAの画面も表示されるようになりました。

2022年12月頃のMeraki Dashboardログイン時の挙動変更

多要素認証を設定していない場合は下記のようなメッセージが表示されて、メールに通知されるSecurity codeをVerification codeの欄に入力する必要があります。

For security reasons, you are required to complete two-factor authentication to log in to the dashboard.

A verification code was sent to your email address ****@lab.test To verify your identity on this device, check your email and enter the verification code below.

Enter verification code - Meraki Dashboard

挙動変更の告知情報

本挙動変更は2022年12月04日にMeraki Communityで情報が発表されているのを確認しております。

community.meraki.com

Strong Passwords
We are now requiring strong passwords on all new accounts and limiting password reuse -- features that already existed in your dashboard organization settings but were optional.

Multi-Factor Authentication
As always, we advise that you enable MFA for an extra layer of security.

Multi-Factor Authentication の項目が多要素認証の必須化に該当します。

Strong Passwords の項目に関しては、メニュー: Organization > SettingsUsed password の設定が強制で有効化されて数値の調整しかできなくなった変更を指しております。

Used password の強制的な有効化

2022年12月06日の更新日付 (Last updated: Dec 6, 2022)で公式ドキュメントにも情報が記載されたのを確認しました。

Merakiアカウントの多要素認証の設定

Merakiアカウントの多要素認証の代表的な設定は、Google Authenticator for Two-Factor Authenticationを用いた方法となります。

SMSを用いる方法もありますが、本記事の執筆時点 (2022年12月)では一部の国でしか利用できないため注意してください。

documentation.meraki.com

Using SMS for Two-Factor Authentication This feature is currently only available in the United States and the United Kingdom. If you are in a different country, SMS authentication is still a beta feature, and we cannot guarantee its reliability. Please feel free to test your phone number on the set up page. SMS authentication has been known to work in the following additional countries: Canada, Mexico, France, Spain, Italy, and Germany.

Meraki Cloudの深刻な障害状況を確認するためのMeraki Status Page

Meraki Cloudの障害状況を伝えるための Meraki Status Page が2022年11月頃に公開されておりました。 Meraki Status PageMeraki Dashboardに組み込まれておらず独立しており、Meraki Dashboardの障害の影響を受けないようになっています。

https://status.meraki.net/

Meraki Status Page

ドキュメント

Meraki Status Page のドキュメントも合わせて公開されており、目標や目的、インシデントの対象範囲などが定義されております。

Meraki Status Page - Cisco Meraki

ドキュメント内の下記の一文が示す通りに、グローバル レベルで顧客全体に影響のある重要な障害のみの通達に限定されております。

At this time, Meraki Status Page is scoped to communicate critical, global customer outages only.

そのため、特定顧客に依存するような障害や、軽微な障害は報告されない可能性がある点に留意してください。

障害状況の通知

画面の右上にある SUBSCRIBE TO UPDATES ボタンを押下すると、メールやFeed (RSS Feed or ATOM Feed)で通知するためのメニューが表示されます。

SUBSCRIBE TO UPDATES ボタン

以前から存在する障害状況の告知パターン

以前の場合は、日本語サポート窓口の方々 (日本ローカル側)が管理されている障害状況のページや、Meraki Community内の Meraki Service Notices のトピックで告知されるパターンがありました。

Cisco Meraki 障害状況 - Cisco Meraki

Meraki Service Notices - The Meraki Community

Merakiの削除済みOrganizationはMeraki Supportでも復旧はできない

Merakiの削除済みOrganizationはMeraki Supportに問い合わせても復旧はできません。

誤ってOrganizationを削除してしまうと取り返しがつかない事態に発展するため、ドキュメントでも強調表記されております。

documentation.meraki.com

Warning: Deleting an Organization is permanent. There is no way Meraki Support can recover an Organization once it has been deleted.

Organization Settings (2022年11月15日時点)

そのため、Meraki Dashboard APIで不要なOrganizationの削除処理をしているようなケースで、指定を誤って本番稼働しているOrganizationを削除して復旧不可能にならないように注意してください。

Merakiの削除済みOrganizationはMeraki Supportでも復旧はできない