Ansible:FortiGate の DNS 設定を管理する

ネットワーク

作業環境

■ Ansible 側

  • CentOS 8.0
  • Python 3.7.7
  • Ansible 2.9.6

■ FortiGate 側

  • 型番:FortiGate 60E
  • バージョン:v6.0.6 build0272 (GA)

fortios_system_dns モジュール

fortios_system_dns モジュールを使用することで FortiGate のコンフィグにおける config system dns の各項目を設定することができます。

  • DNSサーバに関する設定の変更

のために利用できます。

主なパラメータ

パラメータ必須選択肢/
デフォルト
説明
host対象機器のIPアドレス
usernameSSH用のユーザ
password・”” ←SSH用のパスワード
vdom・root ←対象機器のバーチャルドメイン
https・no
・yes ←
HTTPSを使用するかどうか
ssl_verify・no
・yes ←
対象機器の証明書を検証するかどうか
system_dnsconfig system dns の設定項目を
子要素として指定する
 – primaryプライマリDNSサーバのIPアドレス
 – secondaryセカンダリDNSサーバのIPアドレス
 – timeout1 – 10タイムアウト時間(秒)
 – retry0 – 5リトライ回数
 – dns_cache_limitDNSキャッシュレコードの最大数
 – dns_cache_ttlDNSキャッシュを保持する時間(秒)
 – cache_notfound_responses・enable
・disable
レコードがキャッシュにない場合の
DNSサーバーからの応答
 – source_ipDNSサーバと通信する際のソースIP

備考

  • Ansible 2.8 から追加されたモジュール
  • Legacy モードでの実行のためには fortiosapi が必要
  • httpapi での実行が可能

使用例

httpapi を使用してモジュールを実行する例です。

■ インベントリ:hosts

[forti]
10.1.10.100

[forti:vars]
ansible_user=admin
ansible_password=password
ansible_network_os=fortios
ansible_connection=httpapi
ansible_httpapi_use_ssl=yes
ansible_httpapi_validate_certs=no

10.1.10.100 は操作対象の FortiGate のIPアドレスです。
httpapi で使用する変数をグループ変数として定義しています。

DNS 設定

以下の要件で DNS 設定を行うこととします。

  • プライマリ DNS サーバ:8.8.8.8
  • セカンダリ DNSサーバ:なし
  • その他:デフォルト

■ Playbook:playbook.yml

- hosts: all
  gather_facts: no
  tasks:
    - name: "fortios_system_dns test"
      fortios_system_dns:
        vdom: "root"
        system_dns:
          primary: "8.8.8.8"
          secondary: "0.0.0.0"
          timeout: "5"
          retry: "2"
          dns_cache_limit: "5000"
          dns_cache_ttl: "1800"
          cache_notfound_responses: "disable"
          source_ip: "0.0.0.0"

■ Playbook 実行

# ansible-playbook -i hosts playbook.yml

PLAY [all] **********************************************************************************************************

TASK [fortios_system_dns test] **************************************************************************************
changed: [10.1.10.100]

PLAY RECAP **********************************************************************************************************
10.1.10.100                : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

■ 実行前の FortiGate のコンフィグ

FGT # show system dns
config system dns
end

■ 実行後の FortiGate のコンフィグ

FGT # show system dns
config system dns
    set primary 8.8.8.8
end

FGT #
FGT # show full-configuration system dns
config system dns
    set primary 8.8.8.8
    set secondary 0.0.0.0
    set ip6-primary ::
    set ip6-secondary ::
    set timeout 5
    set retry 2
    set dns-cache-limit 5000
    set dns-cache-ttl 1800
    set cache-notfound-responses disable
    set source-ip 0.0.0.0
end

プライマリ DNS サーバが設定されました。

上の例では、Playbook にて fortios_system_dns モジュールのパラメータとして primary 以外も指定しましたが、FortiGate のコンフィグがすべてデフォルトの前提であれば Playbook で fortios_system_dns モジュールの primary パラメータを指定するだけでも結果としては FortiGate のコンフィグは同じになります。
※ Playbook で指定したパラメータのみ値が変更されるため

参考ページ

fortios_system_dns – Configure DNS in Fortinet’s FortiOS and FortiGate — Ansible Documentation

―――――――――――――

タイトルとURLをコピーしました