On this page
community.hrobot.firewall – Manage Hetzner’s dedicated server firewall
Note
This plugin is part of the community.hrobot collection (version 1.2.0).
You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install community.hrobot.
To use it in a playbook, specify: community.hrobot.firewall.
Synopsis
- Manage Hetzner’s dedicated server firewall.
 - Note that idempotency check for TCP flags simply compares strings and doesn’t try to interpret the rules. This might change in the future.
 
Requirements
The below requirements are needed on the host that executes this module.
- ipaddress
 
Parameters
| Parameter | Choices/Defaults | Comments | ||
|---|---|---|---|---|
| allowlist_hos
        
        boolean
         | 
      
       
  | 
      
        
        Whether Hetzner services have access.
        
       aliases: whitelist_hos  | 
     ||
| hetzner_password
        
        string / required
         | 
      
        
        The password for the Robot webservice user.
         | 
     |||
| hetzner_user
        
        string / required
         | 
      
        
        The username for the Robot webservice user.
         | 
     |||
| port
        
        string
         | 
      
       
  | 
      
        
        Switch port of firewall.
         | 
     ||
| rules
        
        dictionary
         | 
      
        
        Firewall rules.
         | 
     |||
| input
        
        list / elements=dictionary
         | 
      
        
        Input firewall rules.
         | 
     |||
| action
        
        string / required
         | 
      
       
  | 
      
        
        Action if rule matches.
         | 
     ||
| dst_ip
        
        string
         | 
      
        
        Destination IP address or subnet address.
        
       
        CIDR notation.
         | 
     |||
| dst_port
        
        string
         | 
      
        
        Destination port or port range.
         | 
     |||
| ip_version
        
        string / required
         | 
      
       
  | 
      
        
        Internet protocol version.
        
       
        Note that currently, only IPv4 is supported by Hetzner.
         | 
     ||
| name
        
        string
         | 
      
        
        Name of the firewall rule.
         | 
     |||
| protocol
        
        string
         | 
      
        
        Protocol above IP layer
         | 
     |||
| src_ip
        
        string
         | 
      
        
        Source IP address or subnet address.
        
       
        CIDR notation.
         | 
     |||
| src_port
        
        string
         | 
      
        
        Source port or port range.
         | 
     |||
| tcp_flags
        
        string
         | 
      
        
        TCP flags or logical combination of flags.
        
       
        Flags supported by Hetzner are  
       syn, fin, rst, psh and urg.
       
        They can be combined with  
       | (logical or) and & (logical and).
       
        See the documentation for more information.
         | 
     |||
| server_ip
        
        string / required
         | 
      
        
        The server's main IP address.
         | 
     |||
| state
        
        string
         | 
      
       
  | 
      
        
        Status of the firewall.
        
       
        Firewall is active if state is  present, and disabled if state is absent.
        | 
     ||
| timeout
        
        integer
         | 
      Default: 
        180
         | 
      
        
        Timeout (in seconds) for waiting for firewall to be configured.
         | 
     ||
| update_timeout
        
        integer
         | 
      Default: 
        30
         | 
      
        
        Timeout to use when configuring the firewall.
        
       
        Note that the API call returns before the firewall has been successfully set up.
         | 
     ||
| wait_delay
        
        integer
         | 
      Default: 
        10
         | 
      
        
        Delay to wait (in seconds) before checking again whether the firewall has been configured.
         | 
     ||
| wait_for_configured
        
        boolean
         | 
      
       
  | 
      
        
        Whether to wait until the firewall has been successfully configured before determining what to do, and before returning from the module.
        
       
        The API returns status  
       in progress when the firewall is currently being configured. If this happens, the module will try again until the status changes to active or disabled.
       
        Please note that there is a request limit. If you have to do multiple updates, it can be better to disable waiting, and regularly use community.hrobot.firewall_info to query status.
         | 
     ||
See Also
See also
- Firewall documentation
 - 
     
Hetzner’s documentation on the stateless firewall for dedicated servers
 - community.hrobot.firewall_info
 - 
     
Retrieve information on firewall configuration.
 
Examples
- name: Configure firewall for server with main IP 1.2.3.4
  community.hrobot.firewall:
    hetzner_user: foo
    hetzner_password: bar
    server_ip: 1.2.3.4
    state: present
    allowlist_hos: yes
    rules:
      input:
        - name: Allow everything to ports 20-23 from 4.3.2.1/24
          ip_version: ipv4
          src_ip: 4.3.2.1/24
          dst_port: '20-23'
          action: accept
        - name: Allow everything to port 443
          ip_version: ipv4
          dst_port: '443'
          action: accept
        - name: Drop everything else
          ip_version: ipv4
          action: discard
  register: result
- ansible.builtin.debug:
    msg: "{{ result }}"
  Return Values
Common return values are documented here, the following are the fields unique to this module:
| Key | Returned | Description | |||
|---|---|---|---|---|---|
| firewall
        
        dictionary
         | 
      success | 
        
        The firewall configuration.
          | 
     |||
| allowlist_hos
        
        boolean
        
       
        added in 1.2.0 of community.hrobot
         | 
      success | 
        
        Whether Hetzner services have access.
         Sample:
        
       
        True
         | 
     |||
| port
        
        string
         | 
      success | 
        
        Switch port of firewall.
        
       main or kvm.
       Sample:
        
       
        main
         | 
     |||
| rules
        
        dictionary
         | 
      success | 
        
        Firewall rules.
          | 
     |||
| input
        
        list / elements=dictionary
         | 
      success | 
        
        Input firewall rules.
          | 
     |||
| action
        
        string
         | 
      success | 
        
        Action if rule matches.
        
       accept or discard.
       Sample:
        
       
        accept
         | 
     |||
| dst_ip
        
        string
         | 
      success | 
        
        Destination IP address or subnet address.
        
       
        CIDR notation.
         Sample:
        
       
        1.2.3.4/32
         | 
     |||
| dst_port
        
        string
         | 
      success | 
        
        Destination port or port range.
         Sample:
        
       
        443
         | 
     |||
| ip_version
        
        string
         | 
      success | 
        
        Internet protocol version.
         Sample:
        
       
        ipv4
         | 
     |||
| name
        
        string
         | 
      success | 
        
        Name of the firewall rule.
         Sample:
        
       
        Allow HTTP access to server
         | 
     |||
| protocol
        
        string
         | 
      success | 
        
        Protocol above IP layer
         Sample:
        
       
        tcp
         | 
     |||
| src_ip
        
        string
         | 
      success | 
        
        Source IP address or subnet address.
        
       
        CIDR notation.
          | 
     |||
| src_port
        
        string
         | 
      success | 
        
        Source port or port range.
          | 
     |||
| tcp_flags
        
        string
         | 
      success | 
        
        TCP flags or logical combination of flags.
          | 
     |||
| server_ip
        
        string
         | 
      success | 
        
        Server's main IP address.
         Sample:
        
       
        1.2.3.4
         | 
     |||
| server_number
        
        integer
         | 
      success | 
        
        Hetzner's internal server number.
         Sample:
        
       
        12345
         | 
     |||
| status
        
        string
         | 
      success | 
        
        Status of the firewall.
        
       active or disabled.
       
        Will be   in process if the firewall is currently updated, and wait_for_configured is set to no or timeout to a too small value.
       Sample:
        
       
        active
         | 
     |||
| whitelist_hos
        
        boolean
         | 
      success | 
        
        Whether Hetzner services have access.
        
       
        Old name of return value   allowlist_hos, will be removed eventually.
       Sample:
        
       
        True
         | 
     |||
Authors
- Felix Fontein (@felixfontein)
 
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
 https://docs.ansible.com/ansible/latest/collections/community/hrobot/firewall_module.html