server

package
v2.32.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2022 License: Apache-2.0 Imports: 12 Imported by: 2

Documentation

Overview

Example (Builder)
package main

import (
	"context"
	"fmt"
	"log"
	"os"

	"github.com/sacloud/libsacloud/v2/helper/builder/disk"

	"github.com/sacloud/libsacloud/v2/helper/builder/server"
	"github.com/sacloud/libsacloud/v2/sacloud"
	"github.com/sacloud/libsacloud/v2/sacloud/ostype"
	"github.com/sacloud/libsacloud/v2/sacloud/types"
)

func main() {
	// APIキー
	token := os.Getenv("SAKURACLOUD_ACCESS_TOKEN")
	secret := os.Getenv("SAKURACLOUD_ACCESS_TOKEN_SECRET")

	// クライアントの作成
	client := sacloud.NewClient(token, secret)

	// ビルダーの準備
	builder := &server.Builder{
		Client:   server.NewBuildersAPIClient(client),
		Name:     "libsacloud-example",
		CPU:      2,
		MemoryGB: 4,
		// Commitment:      types.Commitments.Standard,
		// Generation:      types.PlanGenerations.Default,
		// InterfaceDriver: types.InterfaceDrivers.VirtIO,
		Description:     "description",
		Tags:            types.Tags{"tag1", "tag2"},
		BootAfterCreate: true,
		NIC:             &server.SharedNICSetting{
			// PacketFilterID: types.ID(123456789012),
		},
		//AdditionalNICs: []server.AdditionalNICSettingHolder{
		//	&server.ConnectedNICSetting{
		//		SwitchID:        types.ID(123456789012),
		//		DisplayIPAddress: "192.168.0.1",
		//		PacketFilterID:  types.ID(123456789012),
		//	},
		//},

		// IconID:          types.ID(123456789012),
		// CDROMID:         types.ID(123456789012),
		// PrivateHostID:   types.ID(123456789012),

		DiskBuilders: []disk.Builder{
			&disk.FromUnixBuilder{
				Client:     disk.NewBuildersAPIClient(client),
				OSType:     ostype.CentOS,
				Name:       "libsacloud-example",
				SizeGB:     20,
				PlanID:     types.DiskPlans.SSD,
				Connection: types.DiskConnections.VirtIO,
				//DistantFrom:     []types.ID{types.ID(123456789012)},
				Description: "description",
				Tags:        types.Tags{"tag1", "tag2"},
				EditParameter: &disk.UnixEditRequest{
					HostName:            "libsacloud-example", // ホスト名
					Password:            "P@ssW0rd",           // パスワード
					DisablePWAuth:       false,                // パスワード認証の無効化
					ChangePartitionUUID: true,                 // UUIDの変更
					EnableDHCP:          false,                // DHCPの有効化

					//IPAddress:                 "192.168.11.11",                    // IPアドレス(スイッチ or スイッチ+ルータに接続する場合)
					//NetworkMaskLen:            24,                                 // ネットワークマスク長(スイッチ or スイッチ+ルータに接続する場合)
					//DefaultRoute:              "192.168.11.1",                     // デフォルトルート(スイッチ or スイッチ+ルータに接続する場合)
					//SSHKeys:                   []string{sshKey1, sshKey2},         // 公開鍵(文字列で指定)
					//SSHKeyIDs:                 []types.ID{types.ID(123456789012)}, // 公開鍵(IDで指定)
					//IsSSHKeysEphemeral:        false,                              // 公開鍵をさくらのクラウド側で生成した場合にサーバ作成後に該当鍵の削除を行うか
					//GenerateSSHKeyName:        "",                                 // 生成する公開鍵の名称
					//GenerateSSHKeyPassPhrase:  "",                                 // 生成する公開鍵のパスフレーズ
					//GenerateSSHKeyDescription: "",                                 // 生成する公開鍵の説明
					//IsNotesEphemeral:          false,                              // Notesで指定したスタートアップスクリプトをサーバ作成後に削除するか
					//NoteContents:              []string{note1, note2},             // スタートアップスクリプト(文字列で指定)
					//Notes:                     []*sacloud.DiskEditNote{ID:types.ID(123456789012)}, // スタートアップスクリプト(ID+パラメータで指定)
				},
				// IconID:          0,
			},
		},
	}

	result, err := builder.Build(context.Background(), "is1a")
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("ServerID: %s", result.ServerID)
}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIClient

type APIClient struct {
	Disk         DiskHandler
	Interface    InterfaceHandler
	PacketFilter PacketFilterReader
	Server       CreateServerHandler
	ServerPlan   query.ServerPlanFinder
	Switch       SwitchReader
}

APIClient builderが利用するAPIクライアント群

func NewBuildersAPIClient

func NewBuildersAPIClient(caller sacloud.APICaller) *APIClient

NewBuildersAPIClient APIクライアントの作成

type AdditionalNICSettingHolder

type AdditionalNICSettingHolder interface {
	GetSwitchID() types.ID

	GetDisplayIPAddress() string
	GetPacketFilterID() types.ID
	Validate(ctx context.Context, client *APIClient, zone string) error
	// contains filtered or unexported methods
}

AdditionalNICSettingHolder 追加NIC設定を保持するためのインターフェース

type BuildResult

type BuildResult struct {
	ServerID               types.ID
	DiskIDs                []types.ID
	GeneratedSSHPrivateKey string
}

BuildResult サーバ構築結果

type Builder

type Builder struct {
	Name            string
	CPU             int
	MemoryGB        int
	GPU             int
	Commitment      types.ECommitment
	Generation      types.EPlanGeneration
	InterfaceDriver types.EInterfaceDriver
	Description     string
	IconID          types.ID
	Tags            types.Tags
	BootAfterCreate bool
	CDROMID         types.ID
	PrivateHostID   types.ID
	NIC             NICSettingHolder
	AdditionalNICs  []AdditionalNICSettingHolder
	DiskBuilders    []disk.Builder

	UserData string

	Client *APIClient

	NoWait bool

	ServerID      types.ID
	ForceShutdown bool
}

Builder サーバ作成時のパラメータ

func BuilderFromResource added in v2.9.0

func BuilderFromResource(ctx context.Context, caller sacloud.APICaller, zone string, id types.ID) (*Builder, error)

func (*Builder) Build

func (b *Builder) Build(ctx context.Context, zone string) (*BuildResult, error)

Build サーバ構築を行う

func (*Builder) IsNeedShutdown

func (b *Builder) IsNeedShutdown(ctx context.Context, zone string) (bool, error)

IsNeedShutdown Update時にシャットダウンが必要か

func (*Builder) Update

func (b *Builder) Update(ctx context.Context, zone string) (*BuildResult, error)

Update サーバの更新

func (*Builder) Validate

func (b *Builder) Validate(ctx context.Context, zone string) error

Validate 入力値の検証

各種IDの存在確認のためにAPIリクエストが行われます。

type ConnectedNICSetting

type ConnectedNICSetting struct {
	SwitchID         types.ID
	DisplayIPAddress string
	PacketFilterID   types.ID
}

ConnectedNICSetting サーバ作成時にスイッチに接続するためのパラメータ

NICSettingHolderとAdditionalNICSettingHolderを実装し、Builder.NIC/Builder.AdditionalNICsに利用できる。

func (*ConnectedNICSetting) GetConnectedSwitchParam

func (c *ConnectedNICSetting) GetConnectedSwitchParam() *sacloud.ConnectedSwitch

GetConnectedSwitchParam サーバ作成時の接続先指定パラメータを作成して返す

func (*ConnectedNICSetting) GetDisplayIPAddress

func (c *ConnectedNICSetting) GetDisplayIPAddress() string

GetDisplayIPAddress 表示用IPアドレスを返す

func (*ConnectedNICSetting) GetPacketFilterID

func (c *ConnectedNICSetting) GetPacketFilterID() types.ID

GetPacketFilterID このNICに接続するパケットフィルタのIDを返す

func (*ConnectedNICSetting) GetSwitchID

func (c *ConnectedNICSetting) GetSwitchID() types.ID

GetSwitchID このNICが接続するスイッチのIDを返す

func (*ConnectedNICSetting) Validate

func (c *ConnectedNICSetting) Validate(ctx context.Context, client *APIClient, zone string) error

Validate 設定値の検証

type CreateServerHandler

type CreateServerHandler interface {
	Create(ctx context.Context, zone string, param *sacloud.ServerCreateRequest) (*sacloud.Server, error)
	Update(ctx context.Context, zone string, id types.ID, param *sacloud.ServerUpdateRequest) (*sacloud.Server, error)
	Read(ctx context.Context, zone string, id types.ID) (*sacloud.Server, error)
	InsertCDROM(ctx context.Context, zone string, id types.ID, insertParam *sacloud.InsertCDROMRequest) error
	EjectCDROM(ctx context.Context, zone string, id types.ID, ejectParam *sacloud.EjectCDROMRequest) error
	Boot(ctx context.Context, zone string, id types.ID) error
	BootWithVariables(ctx context.Context, zone string, id types.ID, param *sacloud.ServerBootVariables) error
	Shutdown(ctx context.Context, zone string, id types.ID, shutdownOption *sacloud.ShutdownOption) error
	ChangePlan(ctx context.Context, zone string, id types.ID, plan *sacloud.ServerChangePlanRequest) (*sacloud.Server, error)
}

CreateServerHandler サーバ操作のためのインターフェース

type DisconnectedNICSetting

type DisconnectedNICSetting struct{}

DisconnectedNICSetting 切断状態のNICを作成するためのパラメータ

NICSettingHolderとAdditionalNICSettingHolderを実装し、Builder.NIC/Builder.AdditionalNICsに利用できる。

func (*DisconnectedNICSetting) GetConnectedSwitchParam

func (d *DisconnectedNICSetting) GetConnectedSwitchParam() *sacloud.ConnectedSwitch

GetConnectedSwitchParam サーバ作成時の接続先指定パラメータを作成して返す

func (*DisconnectedNICSetting) GetDisplayIPAddress

func (d *DisconnectedNICSetting) GetDisplayIPAddress() string

GetDisplayIPAddress 表示用IPアドレスを返す

func (*DisconnectedNICSetting) GetPacketFilterID

func (d *DisconnectedNICSetting) GetPacketFilterID() types.ID

GetPacketFilterID このNICに接続するパケットフィルタのIDを返す

func (*DisconnectedNICSetting) GetSwitchID

func (d *DisconnectedNICSetting) GetSwitchID() types.ID

GetSwitchID このNICが接続するスイッチのIDを返す

func (*DisconnectedNICSetting) Validate

func (d *DisconnectedNICSetting) Validate(ctx context.Context, client *APIClient, zone string) error

Validate 設定値の検証

type DiskHandler

type DiskHandler interface {
	ConnectToServer(ctx context.Context, zone string, id types.ID, serverID types.ID) error
	DisconnectFromServer(ctx context.Context, zone string, id types.ID) error
}

DiskHandler ディスクの接続/切断のためのインターフェース

type InterfaceHandler

type InterfaceHandler interface {
	Create(ctx context.Context, zone string, param *sacloud.InterfaceCreateRequest) (*sacloud.Interface, error)
	Update(ctx context.Context, zone string, id types.ID, param *sacloud.InterfaceUpdateRequest) (*sacloud.Interface, error)
	Delete(ctx context.Context, zone string, id types.ID) error
	ConnectToSharedSegment(ctx context.Context, zone string, id types.ID) error
	ConnectToSwitch(ctx context.Context, zone string, id types.ID, switchID types.ID) error
	DisconnectFromSwitch(ctx context.Context, zone string, id types.ID) error
	ConnectToPacketFilter(ctx context.Context, zone string, id types.ID, packetFilterID types.ID) error
	DisconnectFromPacketFilter(ctx context.Context, zone string, id types.ID) error
}

InterfaceHandler NIC操作のためのインターフェース

type NICSettingHolder

type NICSettingHolder interface {
	GetConnectedSwitchParam() *sacloud.ConnectedSwitch
	GetDisplayIPAddress() string

	GetPacketFilterID() types.ID
	Validate(ctx context.Context, client *APIClient, zone string) error
	// contains filtered or unexported methods
}

NICSettingHolder NIC設定を保持するためのインターフェース

type PacketFilterReader

type PacketFilterReader interface {
	Read(ctx context.Context, zone string, id types.ID) (*sacloud.PacketFilter, error)
}

PacketFilterReader パケットフィルタ参照のためのインターフェース

type SharedNICSetting

type SharedNICSetting struct {
	PacketFilterID types.ID
}

SharedNICSetting サーバ作成時に共有セグメントに接続するためのパラメータ

NICSettingHolderを実装し、Builder.NICに利用できる。

func (*SharedNICSetting) GetConnectedSwitchParam

func (c *SharedNICSetting) GetConnectedSwitchParam() *sacloud.ConnectedSwitch

GetConnectedSwitchParam サーバ作成時の接続先指定パラメータを作成して返す

func (*SharedNICSetting) GetDisplayIPAddress

func (c *SharedNICSetting) GetDisplayIPAddress() string

GetDisplayIPAddress 表示用IPアドレスを返す

func (*SharedNICSetting) GetPacketFilterID

func (c *SharedNICSetting) GetPacketFilterID() types.ID

GetPacketFilterID このNICに接続するパケットフィルタのIDを返す

func (*SharedNICSetting) Validate

func (c *SharedNICSetting) Validate(ctx context.Context, client *APIClient, zone string) error

Validate 設定値の検証

type SwitchReader

type SwitchReader interface {
	Read(ctx context.Context, zone string, id types.ID) (*sacloud.Switch, error)
}

SwitchReader スイッチ参照のためのインターフェース

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL