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

注意

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

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

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

要在 playbook 中使用它,请指定: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

列表 / elements=string

应该附加到服务器的 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

列表 / elements=string

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

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

rebuild_protection

布尔值

保护服务器免遭重建。

需要与 delete_protection 相同。

选择

  • false

  • true

rescue_mode

字符串

添加您希望服务器启动到的 Hetzner 救援系统类型。

server_type

字符串

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

如果服务器不存在,则为必填项。

ssh_keys

列表 / elements=string

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

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

state

字符串

服务器的状态。

选择

  • "absent"

  • "present" ← (默认)

  • "restarted"

  • "started"

  • "stopped"

  • "rebuild"

upgrade_disk

布尔值

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

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

选择

  • false ← (默认)

  • true

user_data

字符串

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

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

volumes

列表 / elements=string

应附加到服务器的 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

列表 / elements=string

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

返回: 始终

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

private_networks_info

list / 元素=字典

服务器所连接的私有网络列表(包含名称和 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)