てんこ

ブログ名は愛猫(てん)の愛称です。中身は個人のIT系学習記録です。

AnsibleでFortigateのConfigをバックアップしてみた。

Ansibleのfortios用のモジュールには、バックアップモジュールはありません。

実際には、fortios_configというモジュールで取得ができたようなのですが、pyFGが必要なようです。

自分の環境ではpyFGが入らないので、うーんと思っていました。(細かい原因は追ってません…)

先日書いた汎用のuriを、こちらのブログを参考にして少しいじったら、バックアップを取得することができました。

参考にしたブログではAPI_KEYを利用されていましたが、現時点ではセッションのCookieでも取得は可能でした。(将来が若干不安ではありますが…)

Ansible関連の実践記事一覧はこちら


作成したPlaybook

---
- hosts: fortigate  
  gather_facts: false

  vars:
    api_type: "monitor"
    api_path: "system"
    api_name: "config"

  tasks:
  - name: Login
    uri:
      url: https://{{ ansible_host }}/logincheck
      validate_certs: no
      method : "POST"
      force_basic_auth: yes
      body_format: "form-urlencoded"
      url_username: "{{ ansible_user }}"
      url_password: "{{ ansible_password }}"
      body:
        - [ username, "{{ ansible_user }}" ]
        - [ secretkey, "{{ ansible_password }}" ]
        - [ ajax, "1" ]
    register: http_response
    
  - name: GET Config Backup
    uri:
      url: https://{{ ansible_host }}/api/v2/{{ api_type }}/{{ api_path }}/{{ api_name }}/backup?scope=global
      validate_certs: no
      method: "GET"
      headers:
        Cookie: "{{ http_response.set_cookie }}"
      return_content: yes
    register: get_obj

  - name: Backup File
    copy:
      content: "{{ get_obj.content }}"
      dest: ./backup.txt # バックアップ出力先指定

取得できたバックアップ

f:id:tatematsu_san:20191128224235p:plain

2バイト文字もばっちり。

うーん、この参考にしたブログの方はAPIリファレンスお持ちなのかな…

やっぱりフル活用するにはAPIリファレンスが読みたいなあ…