使用【Ansible】自动化设置允许IP地址到FortiGate
我之前一直手动设置FortiGate的IP地址权限,现在想要自动化这个过程。所以,我尝试使用Ansible来进行设置,并将步骤总结如下。
章节内容
-
- 1. はじめに
-
- 2. インベントリを作成する
3. プレイブックを作成する
3-1. ipアドレスを設定する
3-2. ipアドレスグループを設定する
3-3. ポリシーを設定する
4. プレイブックを実行する
5. 実行結果を確認する
補足. 2台の機器に実行してみた
首先
本次将使用Ansible执行以下三个任务。
① 创建允许连接的IP地址。
② 将创建的IP地址添加到IP地址组中。
③ 创建策略并启用IP地址组。
我已经按照以下方式设置了目录结构。
根目录/
├ 主页/
├ 用户/
├ 弗里盖特/
├ 阿塞布尔/
├ 存货/
│ └ hosts.yml
├ 剧本/
└ config.yml
如果没有安装FortiOS的模块,请执行以下安装命令。
ansible-galaxy collection install fortinet.fortios:任意のバージョン
请查阅官方文件以获取最新版本。
创建库存
首先,在 inventory/hosts.yml 文件中记录FortiGate的连接信息。主机名可以自由选择。根据环境设置适合的FortiGate信息。
---
all:
hosts:
ホスト名:
ansible_host: FortiGateのIPアドレス
ansible_user: FortiGateのログインユーザ
ansible_password: FortiGateのログインパスワード
ansible_network_os: fortinet.fortios.fortios
3. 制作游戏计划书。
接下来,我们将在playbook/config.yml中记录Ansible的连接信息。
请将hosts:设置为hosts.yml中所述的主机名。
---
- hosts: ホスト名
connection: httpapi
gather_facts: no
vars:
vdom: "root"
ansible_httpapi_use_ssl: yes
ansible_httpapi_validate_certs: no
ansible_httpapi_port: 443
设置IP地址
我们将在这里开始描述要在Ansible中执行的任务。
3. 在设置内容的基础上,将要允许的“IP地址信息”写入config.yml。
請您在此次設定中參照FortiGate網頁上的「創建地址」畫面中的項目設定。請同時確認現有的設定以防萬一,並在之後的任務中也請您同樣進行。
tasks:
- name: Configure_IPv4_address.
fortios_firewall_address:
vdom: "root"
state: "present"
firewall_address:
name: "作成するIPアドレスの名前"
type: "ipmask"
associated_interface: "設定するインターフェース"
subnet: "作成するIPアドレス/サブネットマスク"
visibility: "enable"
allow_routing: "disable"
comment: "任意で設定(Allow IPv4 address など)"
请参阅官方文件以获取更详细的信息。
设置IP地址组3-2
将使用第3-1节中创建的IP地址添加到”IP地址组”中。
在”member:”中写下要添加的IP地址。
如果使用”name:”设置的IP地址组不存在,则会创建一个新的IP地址组。
- name: Configure_IPv4_address_group.
fortios_firewall_addrgrp:
vdom: "root"
state: "present"
firewall_addrgrp:
name: "設定するIPアドレスグループの名前"
exclude: "disable"
visibility: "enable"
allow_routing: "disable"
comment: "任意で設定(Allow IPv4 address group など)"
member:
- name: "3-1.で作成したIPアドレスの名前"
- name: "3-1.で作成したIPアドレスの名前"
- name: "3-1.で作成したIPアドレスの名前"
请参考 官方文件 获取详细信息。
设定政策
将使用3-2创建的IP地址组添加到“策略”中。
如果将policyid设置为“现有的ID”,则该策略将被更改;如果设置为“不存在的ID”,则将创建新策略。
如果将action设置为“接受”,则允许连接到分配的IP地址组。
如果将status设置为“启用”,则该策略将被启用。
- name: Configure_IPv4_policy.
fortios_firewall_policy:
vdom: "root"
state: "present"
firewall_policy:
policyid: ""
name: "設定するポリシーの名前"
srcintf:
- name: "着信インターフェース"
dstintf:
- name: "発信インターフェース"
srcaddr:
- name: "送信元のIPアドレスグループの名前"
dstaddr:
- name: "宛先のIPアドレスグループの名前"
schedule: "設定するスケジュール"
service:
- name: "設定するサービスの名前 または サービスグループの名前"
action: "accept"
inspection_mode: "flow"
nat: "disable"
profile_protocol_options: "設定するプロトコルオプションの名前"
av_profile: "設定するアンチウイルスの名前"
webfilter_profile: "設定するWebフィルタの名前"
dnsfilter_profile: "設定するDNSフィルタの名前"
waf_profile: "設定するアプリケーションコントロールの名前"
ips_voip_filter: "設定するIPSの名前"
ssl_ssh_profile: "設定するSSLインスペクションの名前"
logtraffic: "all"
comments: "任意で設定(Allow IPv4 policy など)"
status: "enable"
请参考官方文档以获取详细信息。
选项设置的描述是可选的。(例如个人资料等)
执行播放手册
当config.yml文件创建完成后,执行Ansible的操作。
执行的命令如下所示。
# 「/ansible」ディレクトリに移動する
1. cd /home/user/fortigate/ansible
# 実行するファイルの構文をチェックする
2. ansible-playbook -i inventory/hosts.yml playbook/config.yml --syntax-check
# 実行するタスクの内容を表示する
3. ansible-playbook -i inventory/hosts.yml playbook/config.yml --list-tasks
# ホストに対して設定を検証反映させてみて、現在実行可能な状態かをチェックする
4. ansible-playbook -i inventory/hosts.yml playbook/config.yml --check
# ホストに対して設定を実行する
5. ansible-playbook -i inventory/hosts.yml playbook/config.yml
查看执行结果
请访问FortiGate的网页,并从屏幕侧边栏中选择“策略和对象 > IPv4策略”。
如果创建的策略在列表中存在,那么说明操作成功。
在两台设备上进行了补充测试。
在验证过程中,我们对以下两台设备进行了操作。
操作系统的版本都是符合Ansible推荐的6.0.0以上。
结果是,虽然可以自动化每个设置,但在执行设置时CPU使用率存在差异。
原因似乎是60F型号的机器有“CPU:4核”,而60D型号的机器只有“CPU:1核”。
在将设置交给Ansible处理时,今后还需要注意目标机型的CPU数量。