はじめに
4連休を使って、ntc-templatesというOSSへPull Requestしてみたメモです。
きっかけ
職場でFWポリシーを常に最新に保ちたいというニーズがあります。でも、手作業でエクセルのポリシー表をぽちぽち修正するのってツライし、ミスる原因にもなります。そのため、FWにACLを投入した内容が自動で反映できるようになるといいな、と思ったのがきっかけです。
いろいろ試行錯誤してみました。最初に試したのはこれでした。
- ciscoconfparse
https://pypi.org/project/ciscoconfparse/
自由度が高くて使いやすいのですが、投入したConfigの中身を自分で解釈していく必要があってやめました。
なにか良いツールないかなと思って見つけたのがTextFSMでした。このあたりの記事などを参考にしました。
使ってみたところ
TextFSMだけだとテンプレートを自分で書かないといけないようですが、そこはやっぱり先人がいて、ntc-templatesというOSSがありました。
- ntc-templates
https://github.com/networktocode/ntc-templates
そこで使ってみると、これは便利だ!ということで早速、職場のASAから出力したACLでもやってみることにしました。
ところが、”Did not match any rules” エラーが出てしまいます。微妙にテンプレートの構文とコマンドの出力が合っていないようでした。
じゃあ自分で修正してみよう
自分で修正したら良いね、ということでCiscoのコマンドリファレンスなどとにらめっこして、修正しました。修正したのは主に3点。
- ENTRY_PORTが”ftp-data”のようなハイフン付きにも対応できるようにした
- inactive (hitcnt=0) (inactive) のような出力に対応できるようにした
- log disableやlog default に対応できるようにした
Pull Requestの内容がこれです。
https://github.com/networktocode/ntc-templates/pull/783
英語でのやりとりになるので、そこにも注意しました。英語苦手なので。
おわりに
マージしてもらえたら嬉しいですし、されなくても指摘とか貰えればそれはそれでありがたいです。結構手間暇かかって大変でしたけど、おもしろかったです。