Directus: 使用 CLI 实现自动化

通过 Stackhero CLI 以编程方式启动 Directus、获取其凭据并更改其配置

👋 欢迎使用 Stackhero 文档!

Stackhero 提供 Directus 云 服务,仅需 2 分钟即可投入生产使用:

  • 无限的集合、项目、用户、角色、API 请求和传输
  • 使用 HTTPS 保护的可定制域名(例如,https://cms.your-company.com
  • 包含专用且无限的电子邮件服务器
  • 包含 Redis 缓存服务器以实现高性能
  • 私有和专用 VM提供支持的最佳性能和强大安全性
  1. 一键更新,轻松维护

节省时间简化生活:只需 5 分钟即可试用 Stackhero 的 Directus 云解决方案

本指南将演示如何通过命令行创建 Directus 服务、读取其凭据并更新其配置,全程无需在控制台上点击操作。非常适合脚本、CI 流水线和 AI 智能体等自动化场景。

我们将使用 Stackhero CLI 完成所有操作。如果您尚未安装,可以通过以下命令安装:

curl -fsSL https://www.stackhero.io/install.sh | sh

最简单的方式是通过浏览器登录。当您运行登录命令时,CLI 会自动打开一个网页,您只需在网页上授权访问,无需在 CLI 中输入密码或二次验证码。

stackhero login

登录后,您的凭据会被本地保存,后续 CLI 命令会自动使用。

对于脚本或 CI 流水线等全自动环境,建议使用非交互式访问令牌(access token)。您可以在控制台(账户 > Access tokens)创建一个,然后将其导出为环境变量。CLI 及您运行的任何脚本都会自动读取该变量。

export STACKHERO_TOKEN="usr-xxxxxx:your-token"

接下来,您可以列出当前账户下可用的 Directus 服务商店。CLI 直接支持使用商店名称directus),无需查找或复制任何 ID。

# 列出 Directus 服务商店(如管理多个组织,可添加 --organization)
stackhero services-store-list --name="directus"

后续命令中可以直接使用商店名称 directus,也可以根据需要选择列表中的具体 svs-xxxxxx ID。

# 列出服务商店可用的实例规格(使用 NAME 列作为 --instance 参数)
stackhero instances-store-list --service-store=directus

# 列出可用区域(如 "europe")
stackhero regions-list

以下是一个示例脚本,演示如何创建一个 stack,将您的 Directus 服务添加到 stack,等待服务启动,获取其配置信息(包括自动生成的凭据),并应用新的配置。

#!/bin/bash
set -e

export STACKHERO_TOKEN="usr-xxxxxx:your-token"

serviceStore="directus"   # Directus 服务商店名称(见第 2 步)
instance="..."                # 第 3 步获取的实例规格
region="europe"               # 第 3 步获取的区域名称

# 为您的服务创建一个 stack(默认使用您的主组织,如有需要可添加 --organization)
stackId=$(stackhero --format=script stack-create \
  --name="My Directus stack")
echo "Stack 已创建: ${stackId}"

# 将 Directus 添加到 stack(名称自动解析)
serviceId=$(stackhero --format=script service-add \
  --stack="My Directus stack" \
  --service-store="${serviceStore}" \
  --instance="${instance}" \
  --region="${region}")
echo "服务已添加: directus"

# 等待服务完全启动(可能需要几分钟)
stackhero service-wait-for --service="directus"

# 获取服务配置,包括自动生成的凭据
stackhero service-configuration-get --service="directus" --format=json

service-configuration-get 命令会返回服务的完整配置信息,包括自动生成的密码和连接信息。输出为 JSON 格式,便于在脚本和自动化流程中使用。

stackhero service-configuration-get --service=svc-xxxxxx --format=json

您可以先查看配置 schema 示例,然后应用自定义配置。当您更新配置时,服务可能会自动重启以应用更改。

# 查看服务的配置 schema 及示例
stackhero service-configuration-example --service=svc-xxxxxx

# 应用自定义配置(如有需要服务会自动重启)
stackhero service-configuration-set \
  --service=svc-xxxxxx \
  --configuration='{ "...": "..." }'

# 等待新配置生效
stackhero service-wait-for --service=svc-xxxxxx

至此,您已经完整体验了整个生命周期:启动服务、获取凭据、自动化重新配置,全部可通过脚本自动完成。如需深入了解,请参阅 CLI 完整文档,其中也包含本指南中演示的非交互式 STACKHERO_TOKEN 认证方式。