hetzner.hcloud.server 模块 – 在 Hetzner Cloud 上创建和管理云服务器。

注意

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

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

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

要在剧本中使用它,请指定:hetzner.hcloud.server

概要

  • 在 Hetzner Cloud 上创建、更新和管理云服务器。

别名:hcloud_server

需求

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

  • 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 环境变量设置此选项。

backups

布尔值

启用或禁用给定服务器的备份。

选项

  • false

  • true

datacenter

字符串

要在其中创建服务器的 Hetzner Cloud 数据中心(名称或 ID)。

如果没有给出 location 并且服务器不存在,则需要此参数。

仅在服务器创建期间使用。

delete_protection

布尔值

保护服务器不被删除。

需要与 rebuild_protection 相同。

选项

  • false

  • true

enable_ipv4

布尔值

启用公共 ipv4 地址。

选项

  • false

  • true ← (默认)

enable_ipv6

布尔值

启用公共 ipv6 地址。

选项

  • false

  • true ← (默认)

firewalls

列表 / 元素=字符串

应附加到服务器的 Hetzner Cloud 防火墙(名称或 ID)列表。

force

别名:force_upgrade

布尔值

强制更新服务器。

如果应用了更新,可能会关闭服务器。

选项

  • false ← (默认)

  • true

id

整数

要管理的 Hetzner Cloud 服务器的 ID。

如果没有给出服务器 name,则只需要此参数。

image

字符串

用于创建服务器的 Hetzner Cloud 镜像(名称或 ID)。

如果服务器不存在或当 state=rebuild 时,则需要此参数。

image_allow_deprecated

别名:allow_deprecated_image

布尔值

允许使用已弃用的镜像创建服务器。

选项

  • false ← (默认)

  • true

ipv4

字符串

要使用的 Hetzner Cloud 主 IPv4(名称或 ID)。

如果省略此参数且 enable_ipv4=true,则会自动创建一个新的 ipv4 主 IP。

ipv6

字符串

要使用的 Hetzner Cloud 主 IPv6(名称或 ID)。

如果省略此参数且 enable_ipv6=true,则会自动创建一个新的 ipv6 主 IP。

labels

字典

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

location

字符串

要在其中创建服务器的 Hetzner Cloud 位置(名称或 ID)。

如果没有给出 datacenter 并且服务器不存在,则需要此参数。

仅在服务器创建期间使用。

name

字符串

要管理的 Hetzner Cloud 服务器的名称。

如果没有给出服务器 id 或服务器不存在,则只需要此参数。

placement_group

字符串

要在其中创建服务器的 Hetzner Cloud 部署组(名称或 ID)。

private_networks

列表 / 元素=字符串

服务器应附加到的 Hetzner Cloud 网络(名称或 ID)列表。

如果为 None,则私有网络保持原样(例如,如果之前由 hcloud_server_network 添加),如果它有任何其他值(包括 []),则只有这些网络附加到服务器。

rebuild_protection

布尔值

保护服务器不被重建。

需要与 delete_protection 相同。

选项

  • false

  • true

rescue_mode

字符串

添加您希望服务器引导到其中的 Hetzner 救援系统类型。

server_type

字符串

服务器的 Hetzner Cloud 服务器类型(名称或 ID)。

如果服务器不存在,则需要此参数。

ssh_keys

列表 / 元素=字符串

用于创建服务器的 Hetzner Cloud SSH 密钥(名称或 ID)列表。

仅在服务器创建期间使用。

state

字符串

服务器的状态。

选项

  • "absent"

  • "present" ← (默认)

  • "restarted"

  • "started"

  • "stopped"

  • "rebuild"

upgrade_disk

布尔值

调整服务器大小时调整磁盘大小。

如果您以后想降级服务器,此值应为 False。

选项

  • false ← (默认)

  • true

user_data

字符串

创建时要传递给服务器的用户数据。

仅在服务器创建期间使用。

volumes

列表 / 元素=字符串

应附加到服务器的 Hetzner Cloud 卷(名称或 ID)列表。

仅在服务器创建期间使用。

参见

参见

Hetzner Cloud API 文档

Hetzner Cloud API 的完整参考。

示例

- name: Create a basic server
  hetzner.hcloud.server:
    name: my-server
    server_type: cx22
    image: ubuntu-22.04
    state: present

- name: Create a basic server with ssh key
  hetzner.hcloud.server:
    name: my-server
    server_type: cx22
    image: ubuntu-22.04
    location: fsn1
    ssh_keys:
      - me@myorganisation
    state: present

- name: Resize an existing server
  hetzner.hcloud.server:
    name: my-server
    server_type: cx32
    upgrade_disk: true
    state: present

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

- name: Ensure the server is started
  hetzner.hcloud.server:
    name: my-server
    state: started

- name: Ensure the server is stopped
  hetzner.hcloud.server:
    name: my-server
    state: stopped

- name: Ensure the server is restarted
  hetzner.hcloud.server:
    name: my-server
    state: restarted

- name: Ensure the server is will be booted in rescue mode and therefore restarted
  hetzner.hcloud.server:
    name: my-server
    rescue_mode: linux64
    state: restarted

- name: Ensure the server is rebuild
  hetzner.hcloud.server:
    name: my-server
    image: ubuntu-22.04
    state: rebuild

- name: Add server to placement group
  hetzner.hcloud.server:
    name: my-server
    placement_group: my-placement-group
    force: true
    state: present

- name: Remove server from placement group
  hetzner.hcloud.server:
    name: my-server
    placement_group:
    state: present

- name: Add server with private network only
  hetzner.hcloud.server:
    name: my-server
    enable_ipv4: false
    enable_ipv6: false
    private_networks:
      - my-network
      - 4711
    state: present

返回值

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

描述

hcloud_server

复杂类型

服务器实例

返回:始终

backup_window

布尔值

备份运行的时间窗口 (UTC),如果未启用备份,则为 null

返回:始终

示例: "22-02"

created

字符串

服务器创建的时间点 (ISO-8601 格式)

返回:始终

示例: "2023-11-06T13:36:56+00:00"

datacenter

字符串

服务器数据中心的名称

返回:始终

示例: "fsn1-dc14"

delete_protection

布尔值

新增于 hetzner.hcloud 0.1.0

如果服务器受保护以防止删除,则为 True

返回:始终

示例: false

id

整数

服务器的数字标识符

返回:始终

示例: 1937415

ipv4_address

字符串

服务器的公共 IPv4 地址

返回:始终

示例: "116.203.104.109"

ipv6

字符串

服务器的 IPv6 网络

返回:始终

示例: "2a01:4f8:1c1c:c140::/64"

labels

字典

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

返回:始终

location

字符串

服务器位置的名称

返回:始终

示例: "fsn1"

name

字符串

服务器的名称

返回:始终

示例: "my-server"

placement_group

字符串

新增于 hetzner.hcloud 1.5.0

服务器的部署组

返回:始终

示例: "4711"

private_networks

列表 / 元素=字符串

服务器连接到的私有网络列表 (名称或 ID)

返回:始终

示例: ["my-network", "another-network", "4711"]

private_networks_info

列表 / 元素=字典

服务器连接到的私有网络列表 (包含名称和 IP 的字典)

返回:始终

示例: [{"ip": "192.168.1.1", "name": "my-network"}, {"ip": "10.185.50.40", "name": "another-network"}]

rebuild_protection

布尔值

新增于 hetzner.hcloud 0.1.0

如果服务器受保护以防止重建,则为 True

返回:始终

示例: false

rescue_enabled

布尔值

如果启用救援模式,则为 True,服务器将在下次重新启动时启动到救援系统

返回:始终

示例: false

server_type

字符串

服务器的服务器类型的名称

返回:始终

示例: "cx22"

status

字符串

服务器的状态

返回:始终

示例: "running"

作者

  • Lukas Kaemmerling (@LKaemmerling)