# fortios_firewall_service_custom – Configure custom services 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_service feature and custom 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_service_custom dictionary | Default: null | Configure custom services.
| app_category list |  | Application category ID.
|  | id integer / required |  | Application category id.

app_service_type
string

Choices:
- disable
- app-id
- app-category

Application service type.

| application list |  | Application ID.
|  | id integer / required |  | Application id.
| category string |  | Service category. Source firewall.service.category.name.

check_reset_range
string

Choices:
- disable
- strict
- default

Configure the type of ICMP error message verification.

| color integer |  | Color of icon on the GUI.
| comment string |  | Comment.
| fqdn string |  | Fully qualified domain name.

helper
string

Choices:
- auto
- disable
- ftp
- tftp
- ras
- h323
- tns
- mms
- sip
- pptp
- rtsp
- dns-udp
- dns-tcp
- pmap
- rsh
- dcerpc
- mgcp
- gtp-c
- gtp-u
- gtp-b

Helper name.

| icmpcode integer |  | ICMP code.
| icmptype integer |  | ICMP type.
| iprange string |  | Start and end of the IP range associated with service.
| name string / required |  | Custom service name.

protocol
string

Choices:
- TCP/UDP/SCTP
- ICMP
- ICMP6
- IP
- HTTP
- FTP
- CONNECT
- SOCKS-TCP
- SOCKS-UDP
- ALL

Protocol type based on IANA numbers.

| protocol_number integer |  | IP protocol number.

proxy
string

Choices:
- enable
- disable

Enable/disable web proxy service.

| sctp_portrange string |  | Multiple SCTP port ranges.
| session_ttl integer |  | Session TTL (300 - 604800, 0 = default).

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.

| tcp_halfclose_timer integer |  | Wait time to close a TCP session waiting for an unanswered FIN packet (1 - 86400 sec, 0 = default).
| tcp_halfopen_timer integer |  | Wait time to close a TCP session waiting for an unanswered open session packet (1 - 86400 sec, 0 = default).
| tcp_portrange string |  | Multiple TCP port ranges.
| tcp_timewait_timer integer |  | Set the length of the TCP TIME-WAIT state in seconds (1 - 300 sec, 0 = default).
| udp_idle_timer integer |  | UDP half close timeout (0 - 86400 sec, 0 = default).
| udp_portrange string |  | Multiple UDP port ranges.

visibility
string

Choices:
- enable
- disable

Enable/disable the visibility of the service on the GUI.

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 custom services.
        fortios_firewall_service_custom:
          host:  "{{ host }}"
          username: "{{ username }}"
          password: "{{ password }}"
          vdom:  "{{ vdom }}"
          https: "False"
          state: "present"
          firewall_service_custom:
            app_category:
             -
                id:  "4"
            app_service_type: "disable"
            application:
             -
                id:  "7"
            category: "<your_own_value> (source firewall.service.category.name)"
            check_reset_range: "disable"
            color: "10"
            comment: "Comment."
            fqdn: "<your_own_value>"
            helper: "auto"
            icmpcode: "14"
            icmptype: "15"
            iprange: "<your_own_value>"
            name: "default_name_17"
            protocol: "TCP/UDP/SCTP"
            protocol_number: "19"
            proxy: "enable"
            sctp_portrange: "<your_own_value>"
            session_ttl: "22"
            tcp_halfclose_timer: "23"
            tcp_halfopen_timer: "24"
            tcp_portrange: "<your_own_value>"
            tcp_timewait_timer: "26"
            udp_idle_timer: "27"
            udp_portrange: "<your_own_value>"
            visibility: "enable"

## 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.