digitalocean

package module
v0.0.0-...-cec08c1 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2024 License: MIT Imports: 21 Imported by: 0

README

Fleeting plugin for DigitalOcean (DO)

This is a fleeting plugin for the DigitalOcean.

Pipeline Status Go Report Card

Build the plugin

To generate the binary:

  1. Ensure $GOPATH/bin is on your PATH.
  2. Run:
cd cmd/fleeting-plugin-digitalocean/
go install 

If you manage go versions with asdf, run this command after you generate the binary:

```shell
asdf reshim

Plugin configuration

The following parameters are supported:

Parameter Type Description
access_token string DigitalOcean API Access Token.
instance_slug string DigitalOcean instance slug (e.g. s-4vcpu-8gb)
image string Instance image (e.g. docker-20-04)
creation_wait_timeout string Timeout of waiting for the creation of new droplet, (e.g. "90s", "1.5h" or "2h45m")
cloud_init_filepath string Path to cloud init script, docker-20-04 image has ufw enabled by default, may be disabled via this cloud init config
name string Name of the instance group. Used in ID generation
region_slug string DigitalOcean API Access Token.
tag string Tag that will be assigned to all created instances
ssh_private_key_file string Path to ssh private key file.
If it doesn't exist, ssh key will be generated and saved in this file.
Default connector config
Parameter Default
os linux
username root
protocol ssh
use_static_credentials false

For other instances, if use_static_credentials is false and the protocol is ssh, a new key pair is generated, added to the DigitalOcean account and attached to the instance .

Required Permissions

A service account with the following roles and permissions is required:

Roles:

  • iam.serviceAccountUser

Permissions:

  • compute.instanceGroupManagers.get
  • compute.instanceGroupManagers.update
  • compute.instances.get
  • compute.instances.setMetadata

Examples

[runners.autoscaler.plugin_config]
access_token = "dop_v1_xxx"
image = "docker-20-04"
instance_slug = "s-4vcpu-8gb"
name = "test-runners"
region_slug = "fra1"
ssh_private_key_file = "/home/runner/cache/id_rsa"
tag = "ci-runners"
GitLab Runner

For examples on using this plugin, see the Instance executor and Docker Autoscaler executor documentation.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	NAME      = "fleeting-plugin-aws"
	VERSION   = "dev"
	REVISION  = "HEAD"
	REFERENCE = "HEAD"
	BUILT     = "now"

	Version VersionInfo
)

Functions

This section is empty.

Types

type InstanceGroup

type InstanceGroup struct {
	AccessToken         string `json:"access_token"`
	Name                string `json:"name"`
	RegionSlug          string `json:"region_slug"`
	Image               string `json:"image"`
	InstanceSlug        string `json:"instance_slug"`
	Tag                 string `json:"tag"` // runner instance tag
	SshPrivateKeyFile   string `json:"ssh_private_key_file"`
	CreationWaitTimeout string `json:"creation_wait_timeout"`
	CloudInitFilePath   string `json:"cloud_init_filepath"`
	// contains filtered or unexported fields
}

func (*InstanceGroup) ConnectInfo

func (g *InstanceGroup) ConnectInfo(ctx context.Context, instanceId string) (provider.ConnectInfo, error)

func (*InstanceGroup) Decrease

func (g *InstanceGroup) Decrease(ctx context.Context, instances []string) (succeeded []string, err error)

func (*InstanceGroup) Increase

func (g *InstanceGroup) Increase(ctx context.Context, delta int) (succeeded int, err error)

func (*InstanceGroup) Init

func (g *InstanceGroup) Init(ctx context.Context, logger hclog.Logger, settings provider.Settings) (provider.ProviderInfo, error)

func (*InstanceGroup) Shutdown

func (g *InstanceGroup) Shutdown(ctx context.Context) error

Shutdown as digitalocean charges for the shutdown instances let's make shutdown equivalent to delete

func (*InstanceGroup) Update

func (g *InstanceGroup) Update(ctx context.Context, update func(instance string, state provider.State)) error

type PrivPub

type PrivPub interface {
	crypto.PrivateKey
	Public() crypto.PublicKey
}

type VersionInfo

type VersionInfo struct {
	Name         string `json:"name"`
	Version      string `json:"version"`
	Revision     string `json:"revision"`
	Reference    string `json:"reference"`
	GOVersion    string `json:"go_version"`
	BuiltAt      string `json:"built_at"`
	OS           string `json:"os"`
	Architecture string `json:"architecture"`
}

func (*VersionInfo) BuildInfo

func (v *VersionInfo) BuildInfo() string

func (*VersionInfo) Full

func (v *VersionInfo) Full() string

func (*VersionInfo) String

func (v *VersionInfo) String() string

Directories

Path Synopsis
cmd
internal

Jump to

Keyboard shortcuts

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