ユーザーデータ
Equinix Metal™でサーバーをプロビジョニングする際、ユーザーデータを含めるオプションがあります。このユーザーデータは、一般的なスクリプトの実行、パッケージのインストール、その他の高度な設定プロセスのトリガーなど、サーバー準備完了後にさまざまな自動化タスクを実行するために使用できます。
使用方法
Equinix Metalのユーザーデータは[オープンソースプロジェクトcloudbase-initに基づいており、公式に2つのユーザーデータ形式をサポートしています。
ユーザー・データ・スクリプト
スクリプトはシェルスクリプトを実行するためのもので、[Linux shell の場合は #! で始まり、[Windows Powershell の場合は #ps1 で始まります。
- Debian/Ubuntu
- Windows
#!/bin/bash
export DEBIAN_FRONTEND=noninteractive
apt-get update && apt-get upgrade -y
apt-get install nginx -y
#ps1
New-Item C:/Users/Admin test.txt
Set-Content C:/Users/Admin/test.txt "Hello world"
$password = ConvertTo-SecureString "P@55w0rd!" -AsPlainText -Force
New-LocalUser -Name "user01" -Password $password
クラウド設定データ
クラウド構成データ は有効な yaml 構文を使用し、#cloud-config で始まる必要があります。
#cloud-config
package_upgrade: true
packages:
- nginx
#!<script>と#cloud-config以外のフォーマットのサポートは実験的なものです。
ユーザーデータによるプロビジョニング
- Console
- CLI
- API
メタルコンソールからサーバーをプロビジョニングする場合、オプション設定 > _ユーザーデータ_タブを展開してユーザーデータを追加します。

スクリプトをフィールドに貼り付けます。[Deploy Now(今すぐデプロイ)] をクリックします。サーバーのプロビジョニング処理中にスクリプトが読み込まれ、実行されます。
CLI からサーバーをプロビジョニングする場合は、metal device create コマンドを使用し、-u, --userdata でユーザーデータスクリプトを含めるか、--userdata-file でローカルマシンにあるユーザーデータスクリプトを含むファイルへのパスを含めます。
metal device create --project-id <project_UUID> --plan <server_type> --metro <metro_code> --operating-system <os_code> --userdata-file <local_file_path>
API でプロビジョニングする場合、projects/{id}/devices エンドポイントに POST リクエストを送信し、リクエスト本文に "userdata" パラメータでユーザーデータスクリプトを含めます。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/devices" \
-d '{
"metro": "<metro_code>",
"plan": "<server_type>",
"operating_system": "<os_code>"
"userdata": <string>
}'
スクリプトの長さにもよりますが、サーバーが "Active "と表示されてからサーバーのプロビジョニング処理が実行されるまで、しばらく時間をおいてください。
ユーザーデータの管理
- Console
- CLI
- API
サーバーのユーザーデータは、サーバーの_Settings_タブの_User Data_で確認できます。

CLI からサーバのユーザデータを取得するには、metal device get コマンドを使用し、-o, --output フラグを指定して完全な json 出力を取得します。
metal device get -i <device_id> -o json
API からサーバのユーザデータを取得するには、/devices/{id}/userdata エンドポイントに GET リクエストを送信します。
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' https://api.equinix.com/metal/v1/devices/{id}/userdata
また、そのメタデータエンドポイント からサーバーのユーザーデータにアクセスすることもできます。サーバーに SSH でログインし、https://metadata.platformequinix.com/userdata にリクエストを送信します。
サーバー上のユーザーデータの検証
サーバーに保存されているユーザーデータを確認するには、/var/lib/cloud/instance/user-data.txtで確認します。
ユーザーデータのサーバーログは/var/log/cloud-init.logと/var/log/cloud-init-output.logにあります。
プロビジョニング後のユーザーデータの追加
プロビジョニング中、ユーザーデータはサーバーの初回起動時に実行されます。すでにプロビジョニングされているサーバーにユーザーデータを追加することはできますが、新しいユーザーデータを実行するには、まずサーバーを 再インストール する必要があります。
再インストールは破壊的な操作であり、データの削除を含むオプションがある。慎重に行ってください。
- Console
- CLI
- API
サーバーの_Settings_タブの_User Data_にあるユーザーデータフィールドを更新します。

保存 をクリックします。新しいユーザーデータはサーバーに書き込まれ、すぐにサーバーのメタデータに表示されますが、サーバーの再インストール を実行するまで実行されません。
ユーザー データを更新するには、metal device update コマンドを使用し、更新したユーザー データ スクリプトを -u, --userdata で含めるか、ローカル マシンにある更新したユーザー データ スクリプトを含むファイルへのパスを --userdata-file で含めます。
metal device update --project-id <project_UUID> --plan <server_type> --metro <metro_code> --operating-system <os_code> --userdata-file <local_file_path>
新しいユーザーデータはサーバーに書き込まれ、すぐにサーバーのメタデータに表示されますが、サーバーの再インストールを実行するまで実行されません。
API でプロビジョニングする場合、projects/{id}/devices エンドポイントに PUT リクエストを送信し、リクエスト本文に "userdata" パラメータで更新したユーザーデータスクリプトを含めます。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/devices" \
-d '{
"userdata": <string>
}'
新しいユーザーデータはサーバーに書き込まれ、すぐにサーバーのメタデータに表示されますが、サーバーの再インストールを実行するまで実行されません。