Help us understand the problem. What is going on with this article?

Ansible で Fortigate のコンフィグを取得する

More than 1 year has passed since last update.

1. Ansible のFortiOS対応

Ansible 2.3 では、FortiOSに対応した以下2つのモジュールが導入されました。

  • fortios_config: コンフィグのバックアップを取得したりファイルからコンフィグを投入する
  • fortios_ipv4_policy: IPv4ポリシーを管理する

今回は fortios_config を利用して、Fortigate のコンフィグのバックアップを取得してみます。
(fortios_ipv4_policy についてはこちら)

2. インストール

2.1. Asnbile

pip install ansible

今回はCentOS6.8上にインストールしました。

2.2. pyFG

fortOS 関連のモジュールは内部でpyFGというPythonのモジュールを利用しているためpyFGもインストールしておきます。

pyFGnoのインストール
pip install pyFG

2.3. バージョン確認

バージョン確認
[root@localhost ansible]# ansible --version
ansible 2.3.0.0
  config file =
  configured module search path = Default w/o overrides
  python version = 2.7.8 (default, Oct 22 2016, 09:02:55) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]

ansible.cfg は特に作成していません。

3. インベントリファイルの作成

インベントリファイル例(/etc/ansible/hosts)
[forti]
192.168.0.254  # 今回は1台だけ

[forti:vars]
ansible_user=admin
ansible_password=passwordpassword

4. Plyaybookの作成

以下のファイルを forti.yml として作成します。

Playbook
---
- hosts: forti
  gather_facts: no
  connection: local

  tasks:
    - name: Backup current config
      fortios_config:
        host: "{{ inventory_hostname }}"
        username: "{{ ansible_user }}"
        password: "{{ ansible_password }}"
        backup_path: /root/ansible/config_backup/  # バックアップ先ディレクトリ
        backup: yes  # バックアップする指定

本モジュールの公式ドキュメントが参考になります。

5. 実行

実行結果例
[root@localhost ansible]# ansible-playbook forti.yml

PLAY [forti] *************************************************************************************************

TASK [Backup current config] *********************************************************************************
ok: [192.168.0.254]

PLAY RECAP ***************************************************************************************************
192.168.0.254               : ok=1    changed=0    unreachable=0    failed=0

[root@localhost ansible]#

6. バックアップコンフィグの確認

6.1. ファイルの存在確認

存在確認
[root@localhost ansible]# ls -al /root/ansible/config_backup/ 
-rw-r--r--.  1 root root 48996  4月  1 16:05 2017 192.168.1.81_config.2017-04-01@16:05:30

6.2. ファイルの内容確認

内容確認
[root@localhost ansible]# ls -al /root/ansible/config_backup/192.168.0.254_config.2017-04-01@16:05:30
    config system global
      set timezone 04
      set fgd-alert-subscription advisory latest-threat
      set hostname "fortigate01"
      set internal-switch-mode interface
    end
    config system accprofile
        edit prof_admin
          set vpngrp read-write
          set utmgrp read-write
 (~略~)

無事に取得できました。

7. おわりに

コンフィグのバックアップを自動で取得する仕組みはいろいろありますが、Ansibleを導入済みであったり、「検討していたがAnsibleはFortiOSが未対応だからやめた」という方がいらっしゃいましたら、この方法も候補に入れてもよいのではないでしょうか。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした