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 ¶
- type APIClient
- type AdditionalNICSettingHolder
- type BuildResult
- type Builder
- func (b *Builder) Build(ctx context.Context, zone string) (*BuildResult, error)
- func (b *Builder) IsNeedShutdown(ctx context.Context, zone string) (bool, error)
- func (b *Builder) Update(ctx context.Context, zone string) (*BuildResult, error)
- func (b *Builder) Validate(ctx context.Context, zone string) error
- type ConnectedNICSetting
- func (c *ConnectedNICSetting) GetConnectedSwitchParam() *sacloud.ConnectedSwitch
- func (c *ConnectedNICSetting) GetDisplayIPAddress() string
- func (c *ConnectedNICSetting) GetPacketFilterID() types.ID
- func (c *ConnectedNICSetting) GetSwitchID() types.ID
- func (c *ConnectedNICSetting) Validate(ctx context.Context, client *APIClient, zone string) error
- type CreateServerHandler
- type DisconnectedNICSetting
- func (d *DisconnectedNICSetting) GetConnectedSwitchParam() *sacloud.ConnectedSwitch
- func (d *DisconnectedNICSetting) GetDisplayIPAddress() string
- func (d *DisconnectedNICSetting) GetPacketFilterID() types.ID
- func (d *DisconnectedNICSetting) GetSwitchID() types.ID
- func (d *DisconnectedNICSetting) Validate(ctx context.Context, client *APIClient, zone string) error
- type DiskHandler
- type InterfaceHandler
- type NICSettingHolder
- type PacketFilterReader
- type SharedNICSetting
- type SwitchReader
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 ¶
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 ¶
BuildResult サーバ構築結果
type Builder ¶
type Builder struct { Name string CPU int MemoryGB 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 Client *APIClient ServerID types.ID ForceShutdown bool }
Builder サーバ作成時のパラメータ
func (*Builder) IsNeedShutdown ¶
IsNeedShutdown Update時にシャットダウンが必要か
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を返す
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 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を返す
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 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 {
}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を返す