Learn the "why" behind slow queries and how to fix them in our 2-Part Webinar.
Register now >
Docs 菜单
Docs 主页
/ /

使用自定义插件扩展Atlas CLI

Atlas CLI支持插件,可让您使用自定义命令扩展其功能。您可以使用任何可编译为独立运行二进制文件的编程语言来开发插件。

本教程将引导您使用 Go Cobra 库创建第一个Atlas CLI插件。

要学习;了解有关安装和管理现有插件的更多信息,请参阅 Atlas 插件。

每个Atlas CLI插件都包含两个组件:

  • 描述插件及其命令的 manifest.yml文件

  • 当用户运行插件命令时Atlas CLI调用的可执行二进制文件

当您运行插件命令时, Atlas CLI会读取清单文件,识别正确的二进制文件,并使用适当的参数执行它。该插件二进制文件独立处理所有命令逻辑。

开始之前,请确保已安装以下软件:

  • Go.1 21或更高版本

  • Git

  • Atlas CLI。请参阅安装或更新Atlas CLI。

1

MongoDB提供了一个示例插件存储库,您可以将其用作点:

git clone https://github.com/mongodb/atlas-cli-plugin-example.git
cd atlas-cli-plugin-example
2

该示例插件具有以下结构:

atlas-cli-plugin-example/
├── cmd/
│ └── plugin/
│ └── main.go
├── internal/
├── manifest.template.yml
├── go.mod
├── go.sum
├── Makefile
├── .goreleaser.yaml
└── .github/
└── workflows/
└── release.yml
3

打开 manifest.template.yml 以查看插件配置:

name: atlas-cli-plugin-example
description: this is an example plugin
version: $VERSION
github:
owner: $GITHUB_REPOSITORY_OWNER
name: $GITHUB_REPOSITORY_NAME
binary: $BINARY
commands:
example:
description: Root command of the atlas cli plugin example
aliases:
- example-alias-1
- example-alias-2

manifest.template.yml 定义插件的清单文件。清单会告诉Atlas CLI插件提供了哪些命令以及要执行哪个二进制文件。

4

打开 cmd/plugin/main.go 以查看插件实施:

package main
import (
"fmt"
"os"
"github.com/spf13/cobra"
)
func main() {
rootCmd := &cobra.Command{
Use: "example",
Short: "An example Atlas CLI plugin",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("Hello from the Atlas CLI plugin!")
},
}
if err := rootCmd.Execute(); err != nil {
os.Exit(1)
}
}

该插件使用 Cobra 来定义命令。当Atlas CLI运行该插件时,它会将命令名称和参数传递给二进制文件。

5

从存储库的根目录中,构建插件二进制文件并生成清单文件:

go build -o bin/binary ./cmd/plugin
BINARY=binary VERSION=1.0.0 \
GITHUB_REPOSITORY_OWNER=$(git remote get-url origin | sed 's/.*[:/]\(.*\)\/.*/\1/') \
GITHUB_REPOSITORY_NAME=$(basename -s .git $(git remote get-url origin)) \
envsubst < manifest.template.yml > manifest.yml

创建插件目录并复制文件。默认插件目录取决于您的操作系统:

PLUGIN_DIR=~/Library/Application\ Support/atlascli/plugins/atlas-cli-plugin-example
mkdir -p "$PLUGIN_DIR"
cp manifest.yml bin/binary "$PLUGIN_DIR/"
PLUGIN_DIR=~/.config/atlascli/plugins/atlas-cli-plugin-example
mkdir -p "$PLUGIN_DIR"
cp manifest.yml bin/binary "$PLUGIN_DIR/"
6

验证插件是否有效:

atlas example

输出类似于以下内容:

Hello from the Atlas CLI plugin!

要创建自己的插件,请修改示例或从头开始:

  1. 使用插件的名称、描述和命令更新 manifest.template.yml

  2. 在Go (或任何编译为独立运行二进制文件的语言)中实现命令逻辑。

  3. 确保您的二进制文件名称与 manifest.template.yml 中的 binary字段匹配。

重要

清单中的命令名称不得与现有Atlas CLI命令或其他已安装插件的命令冲突。

要分发您的插件以便其他人可以使用 atlas plugin install 命令安装,请按照以下步骤操作:

  1. 在 GitHub存储库中托管您的插件。

  2. 使用 GoReleaser 或类似工具,通过针对多个平台的已编译二进制文件创建 GitHub 版本。示例存储库包括.goreleaser.yaml 配置和用于自动发布的 GitHub Actions 工作流程。

  3. 在语义版本控制之后创建发布标签(示例,v1.0.0 )。

创建 GitHub发布后,用户可以安装您的插件:

atlas plugin install <github-owner>/<repository-name>

虽然我们建议使用Go和 Cobra,但您可以用任何语言写入插件,并编译为独立运行的可执行二进制文件。有关用不同语言编写的插件的示例,请参阅 GitHub 上的示例Rust插件存储库。

您的插件必须满足以下要求:

  • 您的二进制文件必须接受命令名称作为第一个参数。

  • 您的二进制文件必须是独立运行运行的可执行文件(无外部运行时依赖)。

  • manifest.yml 中的 binary字段必须与二进制文件名匹配。

后退

使用 Admin API运行命令

在此页面上