跳至内容

用户状态

Equinix Metal™ 为您提供用户状态端点,以便您在配置过程中发送和发出自定义状态信息。

当您使用 Equinix Metal 提供的操作系统镜像进行配置时,服务器硬件启动且镜像过程完成后,即可从服务器访问用户状态端点。在此配置中,用户状态的标准用途是在用户数据脚本 (user-data.mdx) 中定义事件,以便发送有关用户数据操作的状态信息。

使用自定义 iPXE 配置用户时,硬件启动后,我们开始安装您提供的映像,即可访问端点。在这种情况下,用户状态允许您在映像创建过程中和创建完成后发送状态信息。

检索用户状态端点

用户状态端点取决于服务器的配置位置,因此您需要先从服务器的元数据中检索它才能使用它。例如,如果您通过 SSH 连接到当前已配置的服务器并通过 cURL 访问元数据端点:

curl https://metadata.platformequinix.com/metadata | jq -r .user_state_url

返回用户状态事件的url:

http://tinkerbell.sv15.packet.net/events

要在配置过程中使用此功能,您可以在用户数据中编写一个 bash 脚本(示例),以检索用户状态端点并将其存储为环境变量。

创建自定义用户状态事件

如果要创建自定义用户状态事件,请向用户状态端点发送 POST 请求。

curl -X POST \
http://tinkerbell.sv15.packet.net/events \
-d '{
"state":"running",
"code":1000,
"message":"running the user data script"
}'

POST 请求的主体可以接受以下字段:

  • "state" - running, succeeded, or failed.
  • "code" - an integer between 1000 and 1099, inclusive.
  • "message" - can be any string message that you want.

例如,您可以在用户数据脚本的末尾使用它来指示您的用户数据脚本在配置服务器后已完成运行。

curl -X POST \
http://tinkerbell.sv15.packet.net/events \
-d '{
"state":"succeeded",
"code":1001,
"message":"done running the user data script"
}'

查看时间线上的事件

POST 请求会将事件添加到服务器的时间线,您可以从控制台和 API 查看该事件。

导航至服务器的“时间线”选项卡。

Screenshot of the Device Timeline in the Console

示例 Bash 脚本

以下是示例 Bash 脚本,您可以在自定义映像安装过程或用户数据中使用它来发送用户状态事件。

#!/bin/bash
apt-get update && apt-get upgrade -y
apt-get install jq -y
url="$(curl https://metadata.platformequinix.com/metadata | jq -r .user_state_url)"

send_user_state_event() {
data=$(
echo "{}" \
| jq '.state = $state | .code = ($code | tonumber) | .message = $message' \
--arg state "$1" \
--arg code "$2" \
--arg message "$3"
)
curl -v -X POST -d "$data" "$url"
}

send_user_state_event running 1000 "hey im still running"
send_user_state_event succeeded 1001 "hey im done now :)"
此页面有帮助吗?