delowan.googlecloud.gcp_compute_firewall (1.0.2) — module

Creates a GCP Firewall

Authors: Google Inc. (@googlecloudplatform)

preview | supported by community

Install collection

Install with ansible-galaxy collection install delowan.googlecloud:==1.0.2


Add to requirements.yml

  collections:
    - name: delowan.googlecloud
      version: 1.0.2

Description

Each network has its own firewall controlling access to and from the instances.

All traffic to instances, even from other instances, is blocked by the firewall unless firewall rules are created to allow it.

The default network has automatically created firewall rules that are shown in default firewall rules. No manually created network has automatically created firewall rules except for a default "allow" rule for outgoing traffic and a default "deny" for incoming traffic. For all networks except the default network, you must create any firewall rules you need.


Requirements

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: create a firewall
  google.cloud.gcp_compute_firewall:
    name: test_object
    allowed:
    - ip_protocol: tcp
      ports:
      - '22'
    target_tags:
    - test-ssh-server
    - staging-ssh-server
    source_tags:
    - test-ssh-clients
    project: test_project
    auth_kind: serviceaccount
    service_account_file: "/tmp/auth.pem"
    state: present

Inputs

    
name:
    description:
    - Name of the resource. Provided by the client when the resource is created. The name
      must be 1-63 characters long, and comply with RFC1035. Specifically, the name must
      be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`
      which means the first character must be a lowercase letter, and all following characters
      must be a dash, lowercase letter, or digit, except the last character, which cannot
      be a dash.
    required: true
    type: str

state:
    choices:
    - present
    - absent
    default: present
    description:
    - Whether the given object should exist in GCP
    type: str

denied:
    description:
    - The list of DENY rules specified by this firewall. Each rule specifies a protocol
      and port-range tuple that describes a denied connection.
    elements: dict
    required: false
    suboptions:
      ip_protocol:
        description:
        - The IP protocol to which this rule applies. The protocol type is required when
          creating a firewall rule. This value can either be one of the following well
          known protocol strings (tcp, udp, icmp, esp, ah, sctp, ipip, all), or the IP
          protocol number.
        required: true
        type: str
      ports:
        description:
        - An optional list of ports to which this rule applies. This field is only applicable
          for UDP or TCP protocol. Each entry must be either an integer or a range. If
          not specified, this rule applies to connections through any port.
        - 'Example inputs include: ["22"], ["80","443"], and ["12345-12349"].'
        elements: str
        required: false
        type: list
    type: list

scopes:
    description:
    - Array of scopes to be used
    elements: str
    type: list

allowed:
    description:
    - The list of ALLOW rules specified by this firewall. Each rule specifies a protocol
      and port-range tuple that describes a permitted connection.
    elements: dict
    required: false
    suboptions:
      ip_protocol:
        description:
        - The IP protocol to which this rule applies. The protocol type is required when
          creating a firewall rule. This value can either be one of the following well
          known protocol strings (tcp, udp, icmp, esp, ah, sctp, ipip, all), or the IP
          protocol number.
        required: true
        type: str
      ports:
        description:
        - An optional list of ports to which this rule applies. This field is only applicable
          for UDP or TCP protocol. Each entry must be either an integer or a range. If
          not specified, this rule applies to connections through any port.
        - 'Example inputs include: ["22"], ["80","443"], and ["12345-12349"].'
        elements: str
        required: false
        type: list
    type: list

network:
    default:
      selfLink: global/networks/default
    description:
    - 'URL of the network resource for this firewall rule. If not specified when creating
      a firewall rule, the default network is used: global/networks/default If you choose
      to specify this property, you can specify the network as a full or partial URL.
      For example, the following are all valid URLs: U(https://www.googleapis.com/compute/v1/projects/myproject/global/)
      networks/my-network projects/myproject/global/networks/my-network global/networks/default
      .'
    - 'This field represents a link to a Network resource in GCP. It can be specified
      in two ways. First, you can place a dictionary with key ''selfLink'' and value of
      your resource''s selfLink Alternatively, you can add `register: name-of-resource`
      to a gcp_compute_network task and then set this network field to "{{ name-of-resource
      }}"'
    required: false
    type: dict

project:
    description:
    - The Google Cloud Platform project to use.
    type: str

disabled:
    description:
    - Denotes whether the firewall rule is disabled, i.e not applied to the network it
      is associated with. When set to true, the firewall rule is not enforced and the
      network behaves as if it did not exist. If this is unspecified, the firewall rule
      will be enabled.
    required: false
    type: bool

env_type:
    description:
    - Specifies which Ansible environment you're running this module within.
    - This should not be set unless you know what you're doing.
    - This only alters the User Agent string for any API requests.
    type: str

priority:
    default: '1000'
    description:
    - Priority for this rule. This is an integer between 0 and 65535, both inclusive.
      When not specified, the value assumed is 1000. Relative priorities determine precedence
      of conflicting rules. Lower value of priority implies higher precedence (eg, a rule
      with priority 0 has higher precedence than a rule with priority 1). DENY rules take
      precedence over ALLOW rules having equal priority.
    required: false
    type: int

auth_kind:
    choices:
    - application
    - machineaccount
    - serviceaccount
    description:
    - The type of credential used.
    required: true
    type: str

direction:
    description:
    - 'Direction of traffic to which this firewall applies; default is INGRESS. Note:
      For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS
      traffic, it is NOT supported to specify sourceRanges OR sourceTags.'
    - 'Some valid choices include: "INGRESS", "EGRESS"'
    required: false
    type: str

log_config:
    description:
    - This field denotes the logging options for a particular firewall rule.
    - If logging is enabled, logs will be exported to Cloud Logging.
    required: false
    suboptions:
      enable:
        description:
        - This field denotes whether to enable logging for a particular firewall rule.
          If logging is enabled, logs will be exported to Stackdriver.
        required: false
        type: bool
      metadata:
        description:
        - This field denotes whether to include or exclude metadata for firewall logs.
        - 'Some valid choices include: "EXCLUDE_ALL_METADATA", "INCLUDE_ALL_METADATA"'
        required: false
        type: str
    type: dict

description:
    description:
    - An optional description of this resource. Provide this property when you create
      the resource.
    required: false
    type: str

source_tags:
    description:
    - If source tags are specified, the firewall will apply only to traffic with source
      IP that belongs to a tag listed in source tags. Source tags cannot be used to control
      traffic to an instance's external IP address. Because tags are associated with an
      instance, not an IP address. One or both of sourceRanges and sourceTags may be set.
      If both properties are set, the firewall will apply to traffic that has source IP
      address within sourceRanges OR the source IP that belongs to a tag listed in the
      sourceTags property. The connection does not need to match both properties for the
      firewall to apply.
    elements: str
    required: false
    type: list

target_tags:
    description:
    - A list of instance tags indicating sets of instances located in the network that
      may make network connections as specified in allowed[].
    - If no targetTags are specified, the firewall rule applies to all instances on the
      specified network.
    elements: str
    required: false
    type: list

source_ranges:
    description:
    - If source ranges are specified, the firewall will apply only to traffic that has
      source IP address in these ranges. These ranges must be expressed in CIDR format.
      One or both of sourceRanges and sourceTags may be set. If both properties are set,
      the firewall will apply to traffic that has source IP address within sourceRanges
      OR the source IP that belongs to a tag listed in the sourceTags property. The connection
      does not need to match both properties for the firewall to apply. Only IPv4 is supported.
    elements: str
    required: false
    type: list

destination_ranges:
    description:
    - If destination ranges are specified, the firewall will apply only to traffic that
      has destination IP address in these ranges. These ranges must be expressed in CIDR
      format. Only IPv4 is supported.
    elements: str
    required: false
    type: list

service_account_file:
    description:
    - The path of a Service Account JSON file if serviceaccount is selected as type.
    type: path

service_account_email:
    description:
    - An optional service account email address if machineaccount is selected and the
      user does not wish to use the default email.
    type: str

source_service_accounts:
    description:
    - If source service accounts are specified, the firewall will apply only to traffic
      originating from an instance with a service account in this list. Source service
      accounts cannot be used to control traffic to an instance's external IP address
      because service accounts are associated with an instance, not an IP address. sourceRanges
      can be set at the same time as sourceServiceAccounts. If both are set, the firewall
      will apply to traffic that has source IP address within sourceRanges OR the source
      IP belongs to an instance with service account listed in sourceServiceAccount. The
      connection does not need to match both properties for the firewall to apply. sourceServiceAccounts
      cannot be used at the same time as sourceTags or targetTags.
    elements: str
    required: false
    type: list

target_service_accounts:
    description:
    - A list of service accounts indicating sets of instances located in the network that
      may make network connections as specified in allowed[].
    - targetServiceAccounts cannot be used at the same time as targetTags or sourceTags.
      If neither targetServiceAccounts nor targetTags are specified, the firewall rule
      applies to all instances on the specified network.
    elements: str
    required: false
    type: list

service_account_contents:
    description:
    - The contents of a Service Account JSON file, either in a dictionary or as a JSON
      string that represents it.
    type: jsonarg

Outputs

allowed:
  contains:
    ip_protocol:
      description:
      - The IP protocol to which this rule applies. The protocol type is required
        when creating a firewall rule. This value can either be one of the following
        well known protocol strings (tcp, udp, icmp, esp, ah, sctp, ipip, all), or
        the IP protocol number.
      returned: success
      type: str
    ports:
      description:
      - An optional list of ports to which this rule applies. This field is only applicable
        for UDP or TCP protocol. Each entry must be either an integer or a range.
        If not specified, this rule applies to connections through any port.
      - 'Example inputs include: ["22"], ["80","443"], and ["12345-12349"].'
      returned: success
      type: list
  description:
  - The list of ALLOW rules specified by this firewall. Each rule specifies a protocol
    and port-range tuple that describes a permitted connection.
  returned: success
  type: complex
creationTimestamp:
  description:
  - Creation timestamp in RFC3339 text format.
  returned: success
  type: str
denied:
  contains:
    ip_protocol:
      description:
      - The IP protocol to which this rule applies. The protocol type is required
        when creating a firewall rule. This value can either be one of the following
        well known protocol strings (tcp, udp, icmp, esp, ah, sctp, ipip, all), or
        the IP protocol number.
      returned: success
      type: str
    ports:
      description:
      - An optional list of ports to which this rule applies. This field is only applicable
        for UDP or TCP protocol. Each entry must be either an integer or a range.
        If not specified, this rule applies to connections through any port.
      - 'Example inputs include: ["22"], ["80","443"], and ["12345-12349"].'
      returned: success
      type: list
  description:
  - The list of DENY rules specified by this firewall. Each rule specifies a protocol
    and port-range tuple that describes a denied connection.
  returned: success
  type: complex
description:
  description:
  - An optional description of this resource. Provide this property when you create
    the resource.
  returned: success
  type: str
destinationRanges:
  description:
  - If destination ranges are specified, the firewall will apply only to traffic that
    has destination IP address in these ranges. These ranges must be expressed in
    CIDR format. Only IPv4 is supported.
  returned: success
  type: list
direction:
  description:
  - 'Direction of traffic to which this firewall applies; default is INGRESS. Note:
    For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS
    traffic, it is NOT supported to specify sourceRanges OR sourceTags.'
  returned: success
  type: str
disabled:
  description:
  - Denotes whether the firewall rule is disabled, i.e not applied to the network
    it is associated with. When set to true, the firewall rule is not enforced and
    the network behaves as if it did not exist. If this is unspecified, the firewall
    rule will be enabled.
  returned: success
  type: bool
id:
  description:
  - The unique identifier for the resource.
  returned: success
  type: int
logConfig:
  contains:
    enable:
      description:
      - This field denotes whether to enable logging for a particular firewall rule.
        If logging is enabled, logs will be exported to Stackdriver.
      returned: success
      type: bool
    metadata:
      description:
      - This field denotes whether to include or exclude metadata for firewall logs.
      returned: success
      type: str
  description:
  - This field denotes the logging options for a particular firewall rule.
  - If logging is enabled, logs will be exported to Cloud Logging.
  returned: success
  type: complex
name:
  description:
  - Name of the resource. Provided by the client when the resource is created. The
    name must be 1-63 characters long, and comply with RFC1035. Specifically, the
    name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`
    which means the first character must be a lowercase letter, and all following
    characters must be a dash, lowercase letter, or digit, except the last character,
    which cannot be a dash.
  returned: success
  type: str
network:
  description:
  - 'URL of the network resource for this firewall rule. If not specified when creating
    a firewall rule, the default network is used: global/networks/default If you choose
    to specify this property, you can specify the network as a full or partial URL.
    For example, the following are all valid URLs: U(https://www.googleapis.com/compute/v1/projects/myproject/global/)
    networks/my-network projects/myproject/global/networks/my-network global/networks/default
    .'
  returned: success
  type: dict
priority:
  description:
  - Priority for this rule. This is an integer between 0 and 65535, both inclusive.
    When not specified, the value assumed is 1000. Relative priorities determine precedence
    of conflicting rules. Lower value of priority implies higher precedence (eg, a
    rule with priority 0 has higher precedence than a rule with priority 1). DENY
    rules take precedence over ALLOW rules having equal priority.
  returned: success
  type: int
sourceRanges:
  description:
  - If source ranges are specified, the firewall will apply only to traffic that has
    source IP address in these ranges. These ranges must be expressed in CIDR format.
    One or both of sourceRanges and sourceTags may be set. If both properties are
    set, the firewall will apply to traffic that has source IP address within sourceRanges
    OR the source IP that belongs to a tag listed in the sourceTags property. The
    connection does not need to match both properties for the firewall to apply. Only
    IPv4 is supported.
  returned: success
  type: list
sourceServiceAccounts:
  description:
  - If source service accounts are specified, the firewall will apply only to traffic
    originating from an instance with a service account in this list. Source service
    accounts cannot be used to control traffic to an instance's external IP address
    because service accounts are associated with an instance, not an IP address. sourceRanges
    can be set at the same time as sourceServiceAccounts. If both are set, the firewall
    will apply to traffic that has source IP address within sourceRanges OR the source
    IP belongs to an instance with service account listed in sourceServiceAccount.
    The connection does not need to match both properties for the firewall to apply.
    sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags.
  returned: success
  type: list
sourceTags:
  description:
  - If source tags are specified, the firewall will apply only to traffic with source
    IP that belongs to a tag listed in source tags. Source tags cannot be used to
    control traffic to an instance's external IP address. Because tags are associated
    with an instance, not an IP address. One or both of sourceRanges and sourceTags
    may be set. If both properties are set, the firewall will apply to traffic that
    has source IP address within sourceRanges OR the source IP that belongs to a tag
    listed in the sourceTags property. The connection does not need to match both
    properties for the firewall to apply.
  returned: success
  type: list
targetServiceAccounts:
  description:
  - A list of service accounts indicating sets of instances located in the network
    that may make network connections as specified in allowed[].
  - targetServiceAccounts cannot be used at the same time as targetTags or sourceTags.
    If neither targetServiceAccounts nor targetTags are specified, the firewall rule
    applies to all instances on the specified network.
  returned: success
  type: list
targetTags:
  description:
  - A list of instance tags indicating sets of instances located in the network that
    may make network connections as specified in allowed[].
  - If no targetTags are specified, the firewall rule applies to all instances on
    the specified network.
  returned: success
  type: list