- AnsibleFest
- Products
- Community
- Webinars & Training
- Blog

Documentation

# fortios_firewall_proxy_policy – Configure proxy policies in Fortinet’s FortiOS and FortiGate

New in version 2.8.

- Synopsis

- Requirements

- Parameters

- Notes

- Examples

- Return Values

- Status

## Synopsis

- This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the user to set and modify firewall feature and proxy_policy category. Examples include all parameters and values need to be adjusted to datasources before usage. Tested with FOS v6.0.5

## Requirements

The below requirements are needed on the host that executes this module.

- fortiosapi>=0.9.8

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
firewall_proxy_policy dictionary | Default: null | Configure proxy policies.
| action string | Choices: accept deny redirect | Accept or deny traffic matching the policy parameters.
| application_list string |  | Name of an existing Application list. Source application.list.name.
| av_profile string |  | Name of an existing Antivirus profile. Source antivirus.profile.name.
| comments string |  | Optional comments.
| disclaimer string | Choices: disable domain policy user | Web proxy disclaimer setting: by domain, policy, or user.
| dlp_sensor string |  | Name of an existing DLP sensor. Source dlp.sensor.name.
| dstaddr list |  | Destination address objects.
|  | name string / required |  | Address name. Source firewall.address.name firewall.addrgrp.name firewall.proxy-address.name firewall.proxy-addrgrp.name firewall.vip.name firewall.vipgrp.name firewall.vip46.name firewall.vipgrp46.name system.external-resource.name.
| dstaddr6 list |  | IPv6 destination address objects.
|  | name string / required |  | Address name. Source firewall.address6.name firewall.addrgrp6.name firewall.vip6.name firewall.vipgrp6.name firewall.vip64.name firewall.vipgrp64.name system.external-resource.name.
| dstaddr_negate string | Choices: enable disable | When enabled, destination addresses match against any address EXCEPT the specified destination addresses.
| dstintf list |  | Destination interface names.
|  | name string / required |  | Interface name. Source system.interface.name system.zone.name.
| global_label string |  | Global web-based manager visible label.
| groups list |  | Names of group objects.
|  | name string / required |  | Group name. Source user.group.name.
| http_tunnel_auth string | Choices: enable disable | Enable/disable HTTP tunnel authentication.
| icap_profile string |  | Name of an existing ICAP profile. Source icap.profile.name.
| internet_service string | Choices: enable disable | Enable/disable use of Internet Services for this policy. If enabled, destination address and service are not used.
| internet_service_custom list |  | Custom Internet Service name.
|  | name string / required |  | Custom name. Source firewall.internet-service-custom.name.
| internet_service_id list |  | Internet Service ID.
|  | id integer / required |  | Internet Service ID. Source firewall.internet-service.id.
| internet_service_negate string | Choices: enable disable | When enabled, Internet Services match against any internet service EXCEPT the selected Internet Service.
| ips_sensor string |  | Name of an existing IPS sensor. Source ips.sensor.name.
| label string |  | VDOM-specific GUI visible label.
| logtraffic string | Choices: all utm disable | Enable/disable logging traffic through the policy.
| logtraffic_start string | Choices: enable disable | Enable/disable policy log traffic start.
| policyid integer / required |  | Policy ID.
| poolname list |  | Name of IP pool object.
|  | name string / required |  | IP pool name. Source firewall.ippool.name.
| profile_group string |  | Name of profile group. Source firewall.profile-group.name.
| profile_protocol_options string |  | Name of an existing Protocol options profile. Source firewall.profile-protocol-options.name.
| profile_type string | Choices: single group | Determine whether the firewall policy allows security profile groups or single profiles only.
| proxy string | Choices: explicit-web transparent-web ftp ssh ssh-tunnel wanopt | Type of explicit proxy.
| redirect_url string |  | Redirect URL for further explicit web proxy processing.
| replacemsg_override_group string |  | Authentication replacement message override group. Source system.replacemsg-group.name.
| scan_botnet_connections string | Choices: disable block monitor | Enable/disable scanning of connections to Botnet servers.
| schedule string |  | Name of schedule object. Source firewall.schedule.onetime.name firewall.schedule.recurring.name firewall.schedule.group.name.
| service list |  | Name of service objects.
|  | name string / required |  | Service name. Source firewall.service.custom.name firewall.service.group.name.
| service_negate string | Choices: enable disable | When enabled, services match against any service EXCEPT the specified destination services.
| session_ttl integer |  | TTL in seconds for sessions accepted by this policy (0 means use the system ).
| spamfilter_profile string |  | Name of an existing Spam filter profile. Source spamfilter.profile.name.
| srcaddr list |  | Source address objects.
|  | name string / required |  | Address name. Source firewall.address.name firewall.addrgrp.name firewall.proxy-address.name firewall.proxy-addrgrp.name system .external-resource.name.
| srcaddr6 list |  | IPv6 source address objects.
|  | name string / required |  | Address name. Source firewall.address6.name firewall.addrgrp6.name system.external-resource.name.
| srcaddr_negate string | Choices: enable disable | When enabled, source addresses match against any address EXCEPT the specified source addresses.
| srcintf list |  | Source interface names.
|  | name string / required |  | Interface name. Source system.interface.name system.zone.name.
| ssh_filter_profile string |  | Name of an existing SSH filter profile. Source ssh-filter.profile.name.
| ssl_ssh_profile string |  | Name of an existing SSL SSH profile. Source firewall.ssl-ssh-profile.name.
| state string | Choices: present absent | Deprecated Starting with Ansible 2.9 we recommend using the top-level 'state' parameter. Indicates whether to create or remove the object.
| status string | Choices: enable disable | Enable/disable the active status of the policy.
| transparent string | Choices: enable disable | Enable to use the IP address of the client to connect to the server.
| users list |  | Names of user objects.
|  | name string / required |  | Group name. Source user.local.name.
| utm_status string | Choices: enable disable | Enable the use of UTM profiles/sensors/lists.
| uuid string |  | Universally Unique Identifier (UUID; automatically assigned but can be manually reset).
| waf_profile string |  | Name of an existing Web application firewall profile. Source waf.profile.name.
| webcache string | Choices: enable disable | Enable/disable web caching.
| webcache_https string | Choices: disable enable | Enable/disable web caching for HTTPS (Requires deep-inspection enabled in ssl-ssh-profile).
| webfilter_profile string |  | Name of an existing Web filter profile. Source webfilter.profile.name.
| webproxy_forward_server string |  | Name of web proxy forward server. Source web-proxy.forward-server.name web-proxy.forward-server-group.name.
| webproxy_profile string |  | Name of web proxy profile. Source web-proxy.profile.name.
host string |  | FortiOS or FortiGate IP address.
https boolean | Choices: no yes ← | Indicates if the requests towards FortiGate must use HTTPS protocol.
password string | Default: "" | FortiOS or FortiGate password.
ssl_verify boolean added in 2.9 | Choices: no yes ← | Ensures FortiGate certificate must be verified by a proper CA.
state string added in 2.9 | Choices: present absent | Indicates whether to create or remove the object. This attribute was present already in previous version in a deeper level. It has been moved out to this outer level.
username string |  | FortiOS or FortiGate username.
vdom string | Default: "root" | Virtual domain, among those defined previously. A vdom is a virtual instance of the FortiGate that can be configured and used as a different unit.

## Notes

Note

- Requires fortiosapi library developed by Fortinet

- Run as a local_action in your playbook

## Examples

    - hosts: localhost
      vars:
       host: "192.168.122.40"
       username: "admin"
       password: ""
       vdom: "root"
       ssl_verify: "False"
      tasks:
      - name: Configure proxy policies.
        fortios_firewall_proxy_policy:
          host:  "{{ host }}"
          username: "{{ username }}"
          password: "{{ password }}"
          vdom:  "{{ vdom }}"
          https: "False"
          state: "present"
          firewall_proxy_policy:
            action: "accept"
            application_list: "<your_own_value> (source application.list.name)"
            av_profile: "<your_own_value> (source antivirus.profile.name)"
            comments: "<your_own_value>"
            disclaimer: "disable"
            dlp_sensor: "<your_own_value> (source dlp.sensor.name)"
            dstaddr:
             -
                name: "default_name_10 (source firewall.address.name firewall.addrgrp.name firewall.proxy-address.name firewall.proxy-addrgrp.name firewall.vip
                  .name firewall.vipgrp.name firewall.vip46.name firewall.vipgrp46.name system.external-resource.name)"
            dstaddr_negate: "enable"
            dstaddr6:
             -
                name: "default_name_13 (source firewall.address6.name firewall.addrgrp6.name firewall.vip6.name firewall.vipgrp6.name firewall.vip64.name firewall
                  .vipgrp64.name system.external-resource.name)"
            dstintf:
             -
                name: "default_name_15 (source system.interface.name system.zone.name)"
            global_label: "<your_own_value>"
            groups:
             -
                name: "default_name_18 (source user.group.name)"
            http_tunnel_auth: "enable"
            icap_profile: "<your_own_value> (source icap.profile.name)"
            internet_service: "enable"
            internet_service_custom:
             -
                name: "default_name_23 (source firewall.internet-service-custom.name)"
            internet_service_id:
             -
                id:  "25 (source firewall.internet-service.id)"
            internet_service_negate: "enable"
            ips_sensor: "<your_own_value> (source ips.sensor.name)"
            label: "<your_own_value>"
            logtraffic: "all"
            logtraffic_start: "enable"
            policyid: "31"
            poolname:
             -
                name: "default_name_33 (source firewall.ippool.name)"
            profile_group: "<your_own_value> (source firewall.profile-group.name)"
            profile_protocol_options: "<your_own_value> (source firewall.profile-protocol-options.name)"
            profile_type: "single"
            proxy: "explicit-web"
            redirect_url: "<your_own_value>"
            replacemsg_override_group: "<your_own_value> (source system.replacemsg-group.name)"
            scan_botnet_connections: "disable"
            schedule: "<your_own_value> (source firewall.schedule.onetime.name firewall.schedule.recurring.name firewall.schedule.group.name)"
            service:
             -
                name: "default_name_43 (source firewall.service.custom.name firewall.service.group.name)"
            service_negate: "enable"
            session_ttl: "45"
            spamfilter_profile: "<your_own_value> (source spamfilter.profile.name)"
            srcaddr:
             -
                name: "default_name_48 (source firewall.address.name firewall.addrgrp.name firewall.proxy-address.name firewall.proxy-addrgrp.name system
                  .external-resource.name)"
            srcaddr_negate: "enable"
            srcaddr6:
             -
                name: "default_name_51 (source firewall.address6.name firewall.addrgrp6.name system.external-resource.name)"
            srcintf:
             -
                name: "default_name_53 (source system.interface.name system.zone.name)"
            ssh_filter_profile: "<your_own_value> (source ssh-filter.profile.name)"
            ssl_ssh_profile: "<your_own_value> (source firewall.ssl-ssh-profile.name)"
            status: "enable"
            transparent: "enable"
            users:
             -
                name: "default_name_59 (source user.local.name)"
            utm_status: "enable"
            uuid: "<your_own_value>"
            waf_profile: "<your_own_value> (source waf.profile.name)"
            webcache: "enable"
            webcache_https: "disable"
            webfilter_profile: "<your_own_value> (source webfilter.profile.name)"
            webproxy_forward_server: "<your_own_value> (source web-proxy.forward-server.name web-proxy.forward-server-group.name)"
            webproxy_profile: "<your_own_value> (source web-proxy.profile.name)"

## Return Values

Common return values are documented here, the following are the fields unique to this module:

Key | Returned | Description
--- | --- | ---
build string | always | Build number of the fortigate image Sample: 1547
http_method string | always | Last method used to provision the content into FortiGate Sample: PUT
http_status string | always | Last result given by FortiGate on last operation applied Sample: 200
mkey string | success | Master key (id) used in the last call to FortiGate Sample: id
name string | always | Name of the table used to fulfill the request Sample: urlfilter
path string | always | Path of the table used to fulfill the request Sample: webfilter
revision string | always | Internal revision number Sample: 17.0.2.10658
serial string | always | Serial number of the unit Sample: FGVMEVYYQT3AB5352
status string | always | Indication of the operation's result Sample: success
vdom string | always | Virtual domain used Sample: root
version string | always | Version of the FortiGate Sample: v5.6.3

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]

- This module is maintained by the Ansible Community. [community]

### Authors

- Miguel Angel Munoz (@mamunozgonzalez)

- Nicolas Thomas (@thomnico)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.