はじめに
Ansible には、IP アドレスを扱うための様々なフィルターがあります。
その中に ipsubnet
というフィルターがあります。
このフィルターにはいくつか機能があり、例えば「10.0.0.0/24」内で /25
で区切ったときの N
番目のサブネットは何か求められます。
この記事では簡単な例でご紹介します。
- 動作確認環境
- Ansible 2.9.19
書式
ipsubnet(親サブネット, 何番目)
サンプルPlaybook
サンプルのPlaybookと出力例をコメントで記載します。
--- - hosts: localhost gather_facts: false tasks: - name: subnet manipulation debug: msg: # 以下は /24 の最初を求めるので "10.0.0.0/24" - "{{ '10.0.0.0/24' | ipsubnet(24, 0) }}" # 以下は /25 の最初を求めるので "10.0.0.0/25" - "{{ '10.0.0.0/24' | ipsubnet(25, 0) }}" # 以下は /25 のインデックス1を求めるので "10.0.0.128/25" - "{{ '10.0.0.0/24' | ipsubnet(25, 1) }}" # 以下は /25 のインデックス2を求めるので false、つまり範囲外 - "{{ '10.0.0.0/24' | ipsubnet(25, 2) }}" # 以下は /25 を求めるので 10.0.0.240/28 - "{{ '10.0.0.0/24' | ipsubnet(28, -1) }}"
おわりに
自前で計算しようとすると以外と手間な気がするので、このようなフィルターがあるのは助かります。