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

사용자 지정 플러그인으로 Atlas CLI 확장

Atlas CLI 사용자 지정 명령으로 기능을 확장할 수 있는 플러그인을 지원합니다. 독립형 바이너리로 컴파일되는 모든 프로그래밍 언어 로 플러그인을 개발할 수 있습니다.

이 튜토리얼에서는 고 (Go)Cobra 라이브러리를 사용하여 첫 번째 Atlas CLI 플러그인을 만드는 방법을 안내합니다.

기존 플러그인 설치 및 관리에 대해 자세히 학습 Atlas 플러그인을 참조하세요.

각 Atlas CLI 플러그인은 두 가지 구성 요소로 구성됩니다.

  • 플러그인과 해당 명령을 설명하는 manifest.yml 파일

  • 사용자가 플러그인 명령을 실행할 때 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.ymlbinary 필드 와 일치하는지 확인합니다.

중요

매니페스트의 명령 이름은 기존 Atlas CLI 명령 또는 설치된 다른 플러그인의 명령과 충돌하지 않아야 합니다.

다른 사용자가 atlas plugin install 명령으로 플러그인을 설치할 수 있도록 플러그인을 배포하려면 다음 단계를 따르세요.

  1. GitHub 리포지토리 에 플러그인을 호스팅합니다.

  2. GoReleaser 또는 유사한 도구를 사용하여 여러 플랫폼에 맞게 컴파일된 바이너리로 GitHub 릴리스를 생성합니다. 예시 리포지토리 .goreleaser.yaml 구성과 자동화된 릴리스를 위한 GitHub 작업 워크플로가 포함되어 있습니다.

  3. 시맨틱 버전 관리에 따라 출시하다 태그를 지정하다 생성합니다( v1.0.0 예시:).

GitHub 출시하다 만든 후 사용자는 플러그인을 설치할 수 있습니다.

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

고 (Go) with Cobra를 권장하지만, 독립형 실행 바이너리로 컴파일되는 모든 언어 로 플러그인을 쓰기 (write) 수 있습니다. 다른 언어 로 작성된 플러그인의 예시 는 GitHub의 Rust 플러그인 리포지토리 예시 를 참조하세요.

플러그인은 다음 요구 사항을 충족해야 합니다.

  • 바이너리는 명령 이름을 첫 번째 인수로 허용해야 합니다.

  • 바이너리는 독립형 실행 파일이어야 합니다(외부 런타임 종속성이 없어야 함).

  • manifest.ymlbinary 필드 바이너리 파일 이름과 일치해야 합니다.

돌아가기

관리자 API 로 명령 실행