golang命令行管理BareMetal服务器插件库Scaleway-cli的使用

Golang 命令行管理 BareMetal 服务器插件库 Scaleway-cli 的使用

Scaleway CLI 图标

Scaleway CLI 是一个工具,可以帮助你直接从终端管理你的 Scaleway 基础设施。

安装

使用包管理器(推荐)

我们推荐使用包管理器安装,这种方式更简单可靠:

Homebrew

在 macOS/Linux 上使用 Homebrew 安装最新稳定版本:

brew install scw

Arch Linux

在 Arch Linux 上从官方仓库安装最新稳定版本:

pacman -S scaleway-cli

Chocolatey

在 Windows 上使用 Chocolatey 安装:

choco install scaleway-cli

手动安装

Linux

curl -s https://raw.githubusercontent.com/scaleway/scaleway-cli/master/scripts/get.sh | sh

Windows

你可以从 GitHub 下载最新发布版本,并按照官方指南添加到你的 PATH 中。

Docker 镜像

你可以像运行任何 Docker 镜像一样使用 CLI:

docker run -i --rm scaleway/cli:latest

快速入门

设置你的配置

安装最新版本后,只需运行初始化命令并按照引导操作:

scw init

它会设置你的配置文件、认证和自动完成功能。注意:你需要有一个 API 密钥(access-key + access-secret),所以请确保在 Scaleway 控制台创建一个。

基本命令

# 创建实例服务器
scw instance server create type=DEV1-S image=ubuntu_noble zone=fr-par-1 tags.0="scw-cli"

# 列出你的服务器
scw instance server list

# 创建名为 foo 的 Kubernetes 集群,使用 cilium 作为 CNI,版本为 1.17.4,并有一个名为 default 的池,包含 3 个 DEV1-M 节点和 2 个标签
scw k8s cluster create name=foo version=1.17.4 pools.0.size=3 pools.0.node-type=DEV1-M pools.0.name=default tags.0=tag1 tags.1=tag2

环境变量

你可以通过环境变量配置你的设置或启用功能。要启用测试版功能,你可以在环境中设置 SCW_ENABLE_BETA=1

参考文档

Namespace Description
baremetal Baremetal API
instance Instance API
k8s Kapsule API
其他更多服务

自行构建

本地构建

如果你有 Go >= 1.13 环境,你可以安装 HEAD 版本以测试最新功能或贡献代码:

go install github.com/scaleway/scaleway-cli/v2/cmd/scw@latest

使用 Docker 构建

你可以使用 Docker 构建 scw CLI:

docker build -t scaleway/cli .

构建完成后,你可以像运行任何镜像一样使用 CLI:

docker run -i --rm scaleway/cli

开发

这个仓库还处于早期阶段,正在积极开发中。如果你想贡献,请阅读 CONTRIBUTING.md

通过 Scaleway Serverless Jobs 自动化 CLI 操作

你可以通过使用 Scaleway Serverless Jobs 调度它们来自动化你的 CLI 操作。这允许你在特定时间或间隔运行你的 Scaleway CLI 命令,而无需手动执行它们。


更多关于golang命令行管理BareMetal服务器插件库Scaleway-cli的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang命令行管理BareMetal服务器插件库Scaleway-cli的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


使用Scaleway-cli管理BareMetal服务器

Scaleway-cli是Scaleway云平台的官方命令行工具,可用于管理包括BareMetal服务器在内的各种资源。下面我将介绍如何使用这个工具来管理BareMetal服务器。

安装Scaleway-cli

首先需要安装Scaleway命令行工具:

# 使用Homebrew安装(MacOS)
brew install scw

# 使用Scoop安装(Windows)
scoop bucket add extras
scoop install scw

# Linux安装
curl -sL https://get.scaleway.com | bash

安装完成后,需要进行初始化配置:

scw init

这会引导你设置默认区域、项目ID等基本信息。

基本用法

1. 列出可用的BareMetal服务器类型

scw baremetal server-type list

2. 创建BareMetal服务器

scw baremetal server create \
  type=GP-BM1-M \
  zone=fr-par-2 \
  name=my-baremetal-server \
  os=ubuntu_focal

3. 列出所有BareMetal服务器

scw baremetal server list

4. 获取服务器详细信息

scw baremetal server get <server-id>

5. 启动/停止/重启服务器

scw baremetal server start <server-id>
scw baremetal server stop <server-id>
scw baremetal server reboot <server-id>

6. 删除服务器

scw baremetal server delete <server-id>

Golang集成示例

如果你想在自己的Go程序中集成Scaleway BareMetal管理功能,可以使用官方的Go SDK:

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/scaleway/scaleway-sdk-go/api/baremetal/v1"
	"github.com/scaleway/scaleway-sdk-go/scw"
)

func main() {
	// 创建客户端
	client, err := scw.NewClient(
		scw.WithDefaultOrganizationID("your-org-id"),
		scw.WithDefaultZone(scw.ZoneFrPar2),
	)
	if err != nil {
		log.Fatal(err)
	}

	// 创建BareMetal API客户端
	baremetalAPI := baremetal.NewAPI(client)

	// 列出服务器类型
	serverTypes, err := baremetalAPI.ListServerTypes(&baremetal.ListServerTypesRequest{})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("Available server types:")
	for _, st := range serverTypes.ServerTypes {
		fmt.Printf("- %s (CPU: %d, RAM: %dGB)\n", st.Name, st.CPUCount, st.RAM/1024)
	}

	// 创建服务器
	createResponse, err := baremetalAPI.CreateServer(&baremetal.CreateServerRequest{
		Name:         "go-created-server",
		Zone:        scw.ZoneFrPar2,
		Type:        "GP-BM1-M",
		Description: "Server created from Go SDK",
	})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("Server created with ID: %s\n", createResponse.ID)

	// 等待服务器就绪
	_, err = baremetalAPI.WaitForServer(&baremetal.WaitForServerRequest{
		ServerID: createResponse.ID,
		Zone:     scw.ZoneFrPar2,
	})
	if err != nil {
		log.Fatal(err)
	}

	// 获取服务器IP
	server, err := baremetalAPI.GetServer(&baremetal.GetServerRequest{
		ServerID: createResponse.ID,
		Zone:     scw.ZoneFrPar2,
	})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("Server IP: %s\n", server.IP)
}

高级功能

1. 设置SSH密钥

scw baremetal server install \
  server-id=<server-id> \
  ssh-key-ids.0=<ssh-key-id>

2. 重装操作系统

scw baremetal server reinstall \
  server-id=<server-id> \
  os=centos_7

3. 创建自定义镜像

scw baremetal server create-image \
  server-id=<server-id> \
  name=my-custom-image

4. 使用自定义镜像创建服务器

scw baremetal server create \
  type=GP-BM1-M \
  zone=fr-par-2 \
  name=from-custom-image \
  image=my-custom-image

最佳实践

  1. 使用标签:为服务器添加标签便于管理

    scw baremetal server update <server-id> tags.0=production tags.1=backend
    
  2. 自动化部署:结合Terraform或Ansible实现基础设施即代码

  3. 监控:集成Prometheus或Grafana监控服务器状态

  4. 备份:定期创建服务器镜像作为备份

  5. 安全:定期更新操作系统和软件包

通过Scaleway-cli和Go SDK,你可以轻松管理BareMetal服务器,实现自动化部署和运维工作流。

回到顶部