hetzner.hcloud.firewall 模块 – 在 Hetzner Cloud 上创建和管理防火墙。

注意

此模块是 hetzner.hcloud 集合(版本 4.2.2)的一部分。

如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install hetzner.hcloud。您需要其他要求才能使用此模块,有关详细信息,请参阅要求

要在 Playbook 中使用它,请指定:hetzner.hcloud.firewall

概要

  • 在 Hetzner Cloud 上创建、更新和管理防火墙。

别名:hcloud_firewall

要求

执行此模块的主机需要以下要求。

  • python-dateutil >= 2.7.5

  • requests >=2.20

参数

参数

注释

api_endpoint

别名:endpoint

字符串

Hetzner Cloud 的 API 端点。

您也可以使用 HCLOUD_ENDPOINT 环境变量设置此选项。

默认值: "https://api.hetzner.cloud/v1"

api_token

字符串 / 必需

Hetzner Cloud 的 API 令牌。

您也可以使用 HCLOUD_TOKEN 环境变量设置此选项。

force

布尔值

强制删除仍在使用的防火墙。

选择

  • false ←(默认值)

  • true

id

整数

要管理的 Hetzner Cloud 防火墙的 ID。

仅当未提供防火墙 name 时才需要。

labels

字典

用户定义的标签(键值对)。

name

字符串

要管理的 Hetzner Cloud 防火墙的名称。

仅当未提供防火墙 id,或者防火墙不存在时才需要。

rules

列表 / 元素=字典

防火墙包含的规则列表。

description

字符串

此规则的用户定义描述。

destination_ips

列表 / 元素=字符串

此规则内允许的 CIDR 列表。

使用 0.0.0.0/0 允许所有 IPv4 地址,使用 ::/0 允许所有 IPv6 地址。

仅当 rules[].direction=out 时使用。

默认值: []

direction

字符串

防火墙规则的方向。

选择

  • "in"

  • "out"

port

字符串

此规则允许的端口或端口范围。

可以通过用短划线分隔两个端口来指定端口范围,例如 1024-5000。

仅当 rules[].protocol=tcprules[].protocol=udp 时使用。

protocol

字符串

防火墙规则的协议。

选择

  • "icmp"

  • "tcp"

  • "udp"

  • "esp"

  • "gre"

source_ips

列表 / 元素=字符串

此规则内允许的 CIDR 列表。

使用 0.0.0.0/0 允许所有 IPv4 地址,使用 ::/0 允许所有 IPv6 地址。

仅当 rules[].direction=in 时使用。

默认值: []

state

字符串

防火墙的状态。

选择

  • "absent"

  • "present" ←(默认值)

另请参阅

另请参阅

Hetzner Cloud API 文档

Hetzner Cloud API 的完整参考。

示例

- name: Create a basic firewall
  hetzner.hcloud.firewall:
    name: my-firewall
    state: present

- name: Create a firewall with rules
  hetzner.hcloud.firewall:
    name: my-firewall
    rules:
      - description: allow icmp from everywhere
        direction: in
        protocol: icmp
        source_ips:
          - 0.0.0.0/0
          - ::/0
    state: present

- name: Create a firewall with labels
  hetzner.hcloud.firewall:
    name: my-firewall
    labels:
      key: value
      mylabel: 123
    state: present

- name: Ensure the firewall is absent (remove if needed)
  hetzner.hcloud.firewall:
    name: my-firewall
    state: absent

返回值

常见的返回值记录在此处,以下是此模块独有的字段

描述

hcloud_firewall

字典

防火墙实例。

已返回: 始终

applied_to

列表 / 元素=字典

应用防火墙的资源列表。

已返回: 始终

applied_to_resources

列表 / 元素=字典

应用防火墙标签选择器的资源列表。

已返回: 如果 hcloud_firewall.applied_to[].type=label_selector

server

整数

服务器的 ID。

已返回: 成功

示例: 12345

type

字符串

引用的资源类型。

已返回: 成功

只能返回

  • "server"

示例: "server"

label_selector

字符串

标签选择器值。

已返回: 成功

示例: "env=prod"

server

整数

服务器的 ID。

已返回: 成功

示例: 12345

type

字符串

资源的类型。

已返回: 成功

只能返回

  • "server"

  • “label_selector”

示例: "label_selector"

id

整数

防火墙的数字标识符。

已返回: 始终

示例: 1937415

labels

字典

用户定义的标签(键值对)。

已返回: 始终

name

字符串

防火墙的名称。

已返回: 始终

示例: "my-firewall"

rules

列表 / 元素=字典

防火墙包含的规则列表。

已返回: 始终

description

字符串

此规则的用户定义描述。

已返回: 始终

示例: "allow http from anywhere"

destination_ips

列表 / 元素=字符串

此规则内允许的目标 CIDR 列表。

已返回: 始终

示例: []

direction

字符串

防火墙规则的方向。

已返回: 始终

示例: "in"

port

字符串

此规则允许的端口或端口范围。

返回: 如果 hcloud_firewall.rules[].protocol=tcphcloud_firewall.rules[].protocol=udp

示例: "80"

protocol

字符串

防火墙规则的协议。

已返回: 始终

示例: "tcp"

source_ips

列表 / 元素=字符串

此规则内允许的源 CIDR 列表。

已返回: 始终

示例: ["0.0.0.0/0", "::/0"]

作者

  • Lukas Kaemmerling (@lkaemmerling)