跳至内容

~> 弃用通知 Equinix Metal 将于2026年6月30日停止服务。所有 Metal 资源将在该提供程序的 5.0.0 版本中移除。如需继续使用,请使用该提供程序的 4.x 版本直至服务终止。更多信息,请访问 https://docs.equinix.com/metal/。

equinix_metal_device(资源)

提供 Equinix Metal 设备资源。可用于创建、修改和删除设备。

~> **注意:**所有参数(包括 root_passworduser_data)都将以纯文本形式存储在原始状态中。阅读更多关于状态中敏感数据的信息

用法示例

创建设备并将其添加到 cool_project 中

resource "equinix_metal_device" "web1" {
hostname = "tf.coreos2"
plan = "c3.small.x86"
metro = "sv"
operating_system = "ubuntu_24_04"
billing_cycle = "hourly"
project_id = local.project_id
}

与上述相同,但最初通过 iPXE 启动,使用 Ignition Provider 进行配置。

resource "equinix_metal_device" "pxe1" {
hostname = "tf.coreos2-pxe"
plan = "c3.small.x86"
metro = "sv"
operating_system = "custom_ipxe"
billing_cycle = "hourly"
project_id = local.project_id
ipxe_script_url = "https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe"
always_pxe = "false"
user_data = data.ignition_config.example.rendered
}

在纽约都会区创建一个没有公网 IP 地址的设备,仅使用 /30 私有 IPv4 子网(4 个 IP 地址)。

resource "equinix_metal_device" "web1" {
hostname = "tf.coreos2"
plan = "c3.small.x86"
metro = "ny"
operating_system = "ubuntu_24_04"
billing_cycle = "hourly"
project_id = local.project_id
ip_address {
type = "private_ipv4"
cidr = 30
}
}

将设备部署到下一个可用的预留硬件上,并进行自定义分区。

resource "equinix_metal_device" "web1" {
hostname = "tftest"
plan = "c3.small.x86"
metro = "ny"
operating_system = "ubuntu_24_04"
billing_cycle = "hourly"
project_id = local.project_id
hardware_reservation_id = "next-available"
storage = <<EOS
{
"disks": [
{
"device": "/dev/sda",
"wipeTable": true,
"partitions": [
{
"label": "BIOS",
"number": 1,
"size": "4096"
},
{
"label": "SWAP",
"number": 2,
"size": "3993600"
},
{
"label": "ROOT",
"number": 3,
"size": "0"
}
]
}
],
"filesystems": [
{
"mount": {
"device": "/dev/sda3",
"format": "ext4",
"point": "/",
"create": {
"options": [
"-L",
"ROOT"
]
}
}
},
{
"mount": {
"device": "/dev/sda2",
"format": "swap",
"point": "none",
"create": {
"options": [
"-L",
"SWAP"
]
}
}
}
]
}
EOS
}

创建一个设备,并允许 user_datacustom_data 属性就地更改(即,无需销毁和重新创建设备):

resource "equinix_metal_device" "pxe1" {
hostname = "tf.coreos2-pxe"
plan = "c3.small.x86"
metro = "sv"
operating_system = "custom_ipxe"
billing_cycle = "hourly"
project_id = local.project_id
ipxe_script_url = "https://rawgit.com/cloudnativelabs/pxe/master/packet/coreos-stable-metal.ipxe"
always_pxe = "false"
user_data = local.user_data
custom_data = local.custom_data

behavior {
allow_changes = [
"custom_data",
"user_data"
]
}
}

模式

需要

  • operating_system(字符串)操作系统别名。要查找别名,或访问操作系统 API 文档,在页面顶部设置您的 API 身份验证令牌,即可查看 API 响应中的 JSON 数据。默认情况下,更改此属性会导致您的设备被删除并重新创建。如果启用 reinstall,则设备将就地更新,而不是重新创建。
  • plan(字符串)设备方案别名。要查找方案别名,请访问方案文档
  • project_id(字符串)要在其中创建设备的项目的 ID

可选

  • always_pxe(布尔值)如果为真,则具有自定义 IPXE 操作系统的设备将
  • behavior(阻止列表,最大值:1)(有关嵌套模式,请参见下文
  • billing_cycle(字符串)每月或每小时
  • custom_data(字符串,敏感)设备所需的自定义数据字符串。默认情况下,更改此属性会导致提供商销毁并重新创建您的设备。如果指定了 reinstallbehavior.allow_changes 包含 "custom_data",则设备将就地更新,而不是重新创建。
  • description(字符串)设备的描述字符串
  • facilities(字符串列表,已弃用)包含部署偏好的设施代码列表。Equinix Metal API 将遍历此列表,并将您的设备部署到第一个有空闲容量的设施。列表项必须是设施代码或任意值(通配符)。与 metro 冲突
  • force_detach_volumes(布尔值)即使设备已连接卷,也将其删除。仅适用于销毁操作。
  • hardware_reservation_id(字符串)您希望将此设备部署到的硬件预留的 UUID,或者如果您希望自动选择下一个可用的预留,则为“next-available”。
  • hostname(字符串)在利用 Layer3 DHCP 或元数据服务配置的部署中使用的设备主机名。
  • ip_address(阻止列表)设备的 IP 地址类型列表(结构如下所述)(有关嵌套模式,请参见下文
  • ipxe_script_url(字符串)指向托管的 iPXE 脚本的 URL。更多信息
  • locked(布尔值)设备是否已锁定或解锁。锁定设备会阻止您删除或重新安装设备,或对设备执行固件更新,并且即使已达到终止时间,也无法回收已设置终止时间的实例。
  • metro(字符串)新设备的都市区。与现有设施冲突
  • project_ssh_key_ids(字符串列表)要添加到设备的项目 SSH 密钥 ID 数组。如果指定此数组,则只会添加列出的项目 SSH 密钥(以及 user_ssh_key_ids 中指定的用户的任何 SSH 密钥)。如果未指定任何 SSH 密钥(user_ssh_key_ids 和 project_ssh_key_ids 均为空列表或省略),则会包含所有父项目密钥、父项目成员密钥和组织成员密钥。可以使用 equinix_metal_project_ssh_key 资源创建项目 SSH 密钥。
  • reinstall(阻止列表,最大值:1)(有关嵌套架构,请参见下文
  • storage(字符串)自定义分区 JSON。仅适用于预留硬件。更多信息请参阅[自定义分区和 RAID文档。
  • tags(字符串列表)附加到设备的标签
  • termination_time(字符串)设备终止时间戳。例如“ 2021/09/03 T16:32:00+03:00”。如果您未提供时区信息,则时间戳默认为 UTC 时间。
  • timeouts(块,可选)(有关嵌套模式,请参见下文
  • user_data(字符串,敏感信息)设备所需的用户数据字符串。默认情况下,更改此属性会导致提供商销毁并重新创建您的设备。如果指定了 reinstallbehavior.allow_changes 包含 "user_data",则设备将就地更新,而不是重新创建。
  • user_ssh_key_ids(字符串列表)要将 SSH 密钥添加到设备的用户 ID 数组。如果指定此数组,则只会添加列表中用户的 SSH 密钥(以及 project_ssh_key_ids 中指定的任何项目 SSH 密钥)。如果未指定任何 SSH 密钥(user_ssh_key_ids 和 project_ssh_key_ids 均为空列表或省略),则会包含所有父项目密钥、父项目成员密钥和组织成员密钥。可以使用 equinix_metal_ssh_key 资源创建用户 SSH 密钥。
  • wait_for_reservation_deprovision(布尔值)仅用于已预留硬件中的设备。如果设置此项,则删除此设备的操作将被阻止,直到硬件预留被标记为可配置(2019 年 8 月约为 4 分钟)。

只读

  • access_private_ipv4(字符串)分配给设备的 IPv4 私有 IP 地址
  • access_public_ipv4(字符串)分配给设备的 IPv4 维护 IP 地址
  • access_public_ipv6(字符串)分配给设备的 IPv6 维护 IP 地址
  • created(字符串)设备创建时的时间戳
  • deployed_facility(字符串,已弃用)设备部署所在的设施
  • deployed_hardware_reservation_id(字符串)此设备部署所在硬件预留的 ID。在使用下一个可用硬件预留时,此 ID 非常有用。
  • id(字符串)此资源的 ID。
  • network(对象列表)设备的私有和公共 IP(v4 和 v6)网络详细信息。当设备在没有任何特殊网络配置的情况下运行时,它将有 3 个地址:公共 IPv4 地址、私有 IPv4 地址和 IPv6 地址(有关嵌套架构,请参见下面的嵌套架构)。
  • network_type(字符串,已弃用)设备的网络类型,用于二层网络。取值范围为 layer3、hybrid、hybrid-bonded、layer2-individual 或 layer2-bonded。
  • ports(对象列表)分配给设备的端口(有关嵌套架构,请参见下面的嵌套架构
  • root_password(字符串,敏感信息)服务器的 root 密码(24 小时后禁用)
  • sos_hostname(字符串)用于通过 SSH 串口访问设备的主机名(https://docs.equinix.com/metal/resilience-recovery/serial-over-ssh/)。
  • ssh_key_ids(字符串列表)设备中部署的 SSH 密钥 ID 列表,可以是用户 SSH 密钥,也可以是项目 SSH 密钥。
  • state(字符串)设备状态
  • updated(字符串)设备上次更新的时间戳

behavior 的嵌套模式

选修的:

  • allow_changes(字符串列表)允许在不重新创建实例的情况下更改的属性列表。支持的属性:custom_datauser_data

ip_address 的嵌套模式

必需的:

  • type(字符串)public_ipv4、private_ipv4 或 public_ipv6 之一

选修的:

  • cidr(数字)分配给此设备的 IP 地址块的 CIDR 后缀
  • reservation_ids(字符串列表)要从中选取区块的预订 ID

reinstall 的嵌套模式

选修的:

  • deprovision_fast(布尔值)重新安装操作系统之前,是否应将操作系统磁盘填充 00h 字节
  • enabled(布尔值)是否应重新安装设备而不是销毁设备
  • preserve_data(布尔值)重新安装过程中是否保留或擦除非操作系统磁盘

timeouts 的嵌套模式

选修的:

  • create(字符串)
  • delete(字符串)
  • update(字符串)

network 的嵌套模式

只读:

  • address(字符串)
  • cidr(数字)
  • family(数字)
  • gateway(字符串)
  • public(布尔值)

ports 的嵌套模式

只读:

  • bonded(布尔值)
  • id(字符串)
  • mac(字符串)
  • name(字符串)
  • type(字符串)
此页面有帮助吗?