AWS版Catalyst 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 ~]$
関連ドキュメント
AWS版Catalyst 9800-CLにおける ios-config
キーワードに関する記述は、下記のドキュメントに記載があります。