My Home NW Lab

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

AWS版Catalyst 9800-CL向けの ios-config の連番生成の簡易スクリプト

AWSCatalyst 9800-CLではUser dataの設定領域で ios-config のキーワードを用いると起動時に読み込ませたいコンフィグを指定できます。 主にホスト名などの基本的な設定情報や、変動的な値となるPublic IPの情報をTerraformで渡す際に便利です。

しかしながら、下記のようにシーケンス番号を用いてコンフィグを記述する都合上、手動でシーケンス番号を管理するのは手間がかかりますし、編集ミスを誘発しかねません。

ios-config-1="username admin privilege 15 password 0 PASSWORD"
ios-config-2="hostname wlc01"
ios-config-3="wireless management interface GigabitEthernet1"
ios-config-4=" public-ip 198.51.100.123"

そのため、AWS Cloud Shellのbash環境で使える簡易スクリプトを書き残しておきます。

利用時の注意点

コンフィグ内の特殊文字に関しては予めエスケープ処理をしてください。

簡易スクリプト

cat コマンドとヒア ドキュメントを用いてターミナルからコンフィグを渡して、同じくターミナルに連番生成後 (整形後)の内容を出力するようにしました。 コンフィグ部分を書き換えて利用してください。

cat << EOF | awk 'BEGIN { SEQ=1 } { print "ios-config-" SEQ "=\"" $0 "\""; SEQ++}'
username admin privilege 15 password 0 PASSWORD
hostname wlc01
wireless management interface GigabitEthernet1
 public-ip 198.51.100.123
EOF

簡易スクリプトの使い方

出力例

[cloudshell-user@ip-10-6-89-162 ~]$ cat << EOF | awk 'BEGIN { SEQ=1 } { print "ios-config-" SEQ "=\"" $0 "\""; SEQ++}'
> username admin privilege 15 password 0 PASSWORD
> hostname wlc01
> wireless management interface GigabitEthernet1
>  public-ip 198.51.100.123
> EOF
ios-config-1="username admin privilege 15 password 0 PASSWORD"
ios-config-2="hostname wlc01"
ios-config-3="wireless management interface GigabitEthernet1"
ios-config-4=" public-ip 198.51.100.123"
[cloudshell-user@ip-10-6-89-162 ~]$ 

関連ドキュメント

AWSCatalyst 9800-CLにおける ios-config キーワードに関する記述は、下記のドキュメントに記載があります。

www.cisco.com