providers

package
v0.2.3 Latest Latest
Warning

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

Go to latest
Published: Jan 31, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Registry = map[string]func() Provider{
	"digitalocean": NewDigitalOcean,
	"hetzner":      NewHetzner,
	"aws":          NewAWS,
	"linode":       NewLinode,
}

Registry maps provider names to constructor functions

Functions

func GetSupportedProviders

func GetSupportedProviders() []string

GetSupportedProviders returns a list of supported provider names

Types

type AWSProvider

type AWSProvider struct {
	// contains filtered or unexported fields
}

AWSProvider implements the Provider interface for AWS

func (*AWSProvider) Configure

func (p *AWSProvider) Configure(ctx *pulumi.Context, creds config.InfraCredentialsConfig) error

Configure sets up the provider with credentials

func (*AWSProvider) CreateFirewall

func (p *AWSProvider) CreateFirewall(ctx *pulumi.Context, name string, spec *config.InfraFirewallConfig, serverIDs []pulumi.StringInput) error

CreateFirewall provisions AWS Security Groups

func (*AWSProvider) CreateSSHKey

func (p *AWSProvider) CreateSSHKey(ctx *pulumi.Context, publicKey string, keyName string) (pulumi.StringOutput, error)

CreateSSHKey imports an SSH public key to AWS and returns the key name

func (*AWSProvider) CreateServer

func (p *AWSProvider) CreateServer(ctx *pulumi.Context, name string, spec config.InfraServerSpec, region string, vpcID pulumi.StringInput, resourceName string, autoSSHKeyID pulumi.StringOutput, autoSSHPublicKey string) ([]pulumi.StringInput, error)

CreateServer provisions an AWS EC2 instance

func (*AWSProvider) CreateVPC

func (p *AWSProvider) CreateVPC(ctx *pulumi.Context, name string, spec *config.InfraVPCConfig, region string) (pulumi.StringOutput, error)

CreateVPC provisions an AWS VPC with subnets

func (*AWSProvider) GetDefaultImage

func (p *AWSProvider) GetDefaultImage() string

GetDefaultImage returns the default AMI for AWS (Ubuntu 22.04 in us-east-1) Note: AMIs are region-specific, this is for us-east-1

func (*AWSProvider) GetDefaultSize

func (p *AWSProvider) GetDefaultSize() string

GetDefaultSize returns the default instance type for AWS

func (*AWSProvider) Name

func (p *AWSProvider) Name() string

Name returns the provider identifier

func (*AWSProvider) ValidateConfig

func (p *AWSProvider) ValidateConfig(infra *config.InfrastructureConfig) error

ValidateConfig validates AWS-specific configuration

type DigitalOceanProvider

type DigitalOceanProvider struct {
	// contains filtered or unexported fields
}

DigitalOceanProvider implements the Provider interface for DigitalOcean

func (*DigitalOceanProvider) Configure

Configure sets up the provider with credentials

func (*DigitalOceanProvider) CreateFirewall

func (p *DigitalOceanProvider) CreateFirewall(ctx *pulumi.Context, name string, spec *config.InfraFirewallConfig, serverIDs []pulumi.StringInput) error

CreateFirewall provisions a DigitalOcean Firewall

func (*DigitalOceanProvider) CreateSSHKey

func (p *DigitalOceanProvider) CreateSSHKey(ctx *pulumi.Context, publicKey string, keyName string) (pulumi.StringOutput, error)

CreateSSHKey uploads an SSH key to DigitalOcean and returns the key ID

func (*DigitalOceanProvider) CreateServer

func (p *DigitalOceanProvider) CreateServer(ctx *pulumi.Context, name string, spec config.InfraServerSpec, region string, vpcID pulumi.StringInput, resourceName string, autoSSHKeyID pulumi.StringOutput, autoSSHPublicKey string) ([]pulumi.StringInput, error)

CreateServer provisions a DigitalOcean Droplet

func (*DigitalOceanProvider) CreateVPC

func (p *DigitalOceanProvider) CreateVPC(ctx *pulumi.Context, name string, spec *config.InfraVPCConfig, region string) (pulumi.StringOutput, error)

CreateVPC provisions a DigitalOcean VPC

func (*DigitalOceanProvider) GetDefaultImage

func (p *DigitalOceanProvider) GetDefaultImage() string

GetDefaultImage returns the default OS image for DigitalOcean

func (*DigitalOceanProvider) GetDefaultSize

func (p *DigitalOceanProvider) GetDefaultSize() string

GetDefaultSize returns the default server size for DigitalOcean

func (*DigitalOceanProvider) Name

func (p *DigitalOceanProvider) Name() string

Name returns the provider identifier

func (*DigitalOceanProvider) ValidateConfig

func (p *DigitalOceanProvider) ValidateConfig(infra *config.InfrastructureConfig) error

ValidateConfig validates DigitalOcean-specific configuration

type HetznerProvider

type HetznerProvider struct {
	// contains filtered or unexported fields
}

HetznerProvider implements the Provider interface for Hetzner Cloud

func (*HetznerProvider) Configure

Configure sets up the provider with credentials

func (*HetznerProvider) CreateFirewall

func (p *HetznerProvider) CreateFirewall(ctx *pulumi.Context, name string, spec *config.InfraFirewallConfig, serverIDs []pulumi.StringInput) error

CreateFirewall provisions a Hetzner Cloud Firewall

func (*HetznerProvider) CreateSSHKey

func (p *HetznerProvider) CreateSSHKey(ctx *pulumi.Context, publicKey string, keyName string) (pulumi.StringOutput, error)

CreateSSHKey uploads an SSH key to Hetzner and returns the key ID

func (*HetznerProvider) CreateServer

func (p *HetznerProvider) CreateServer(ctx *pulumi.Context, name string, spec config.InfraServerSpec, region string, vpcID pulumi.StringInput, resourceName string, autoSSHKeyID pulumi.StringOutput, autoSSHPublicKey string) ([]pulumi.StringInput, error)

CreateServer provisions a Hetzner Cloud Server

func (*HetznerProvider) CreateVPC

func (p *HetznerProvider) CreateVPC(ctx *pulumi.Context, name string, spec *config.InfraVPCConfig, region string) (pulumi.StringOutput, error)

CreateVPC provisions a Hetzner Cloud Network

func (*HetznerProvider) GetDefaultImage

func (p *HetznerProvider) GetDefaultImage() string

GetDefaultImage returns the default OS image for Hetzner

func (*HetznerProvider) GetDefaultSize

func (p *HetznerProvider) GetDefaultSize() string

GetDefaultSize returns the default server size for Hetzner

func (*HetznerProvider) Name

func (p *HetznerProvider) Name() string

Name returns the provider identifier

func (*HetznerProvider) ValidateConfig

func (p *HetznerProvider) ValidateConfig(infra *config.InfrastructureConfig) error

ValidateConfig validates Hetzner-specific configuration

type LinodeProvider

type LinodeProvider struct {
	// contains filtered or unexported fields
}

LinodeProvider implements the Provider interface for Linode

func (*LinodeProvider) Configure

func (p *LinodeProvider) Configure(ctx *pulumi.Context, creds config.InfraCredentialsConfig) error

Configure sets up the provider with credentials

func (*LinodeProvider) CreateFirewall

func (p *LinodeProvider) CreateFirewall(ctx *pulumi.Context, name string, spec *config.InfraFirewallConfig, serverIDs []pulumi.StringInput) error

CreateFirewall provisions a Linode Firewall

func (*LinodeProvider) CreateSSHKey

func (p *LinodeProvider) CreateSSHKey(ctx *pulumi.Context, publicKey string, keyName string) (pulumi.StringOutput, error)

CreateSSHKey uploads an SSH key to Linode and returns the key ID

func (*LinodeProvider) CreateServer

func (p *LinodeProvider) CreateServer(ctx *pulumi.Context, name string, spec config.InfraServerSpec, region string, vpcID pulumi.StringInput, resourceName string, autoSSHKeyID pulumi.StringOutput, autoSSHPublicKey string) ([]pulumi.StringInput, error)

CreateServer provisions a Linode instance

func (*LinodeProvider) CreateVPC

func (p *LinodeProvider) CreateVPC(ctx *pulumi.Context, name string, spec *config.InfraVPCConfig, region string) (pulumi.StringOutput, error)

CreateVPC provisions a Linode VPC

func (*LinodeProvider) GetDefaultImage

func (p *LinodeProvider) GetDefaultImage() string

GetDefaultImage returns the default image for Linode

func (*LinodeProvider) GetDefaultSize

func (p *LinodeProvider) GetDefaultSize() string

GetDefaultSize returns the default instance type for Linode

func (*LinodeProvider) Name

func (p *LinodeProvider) Name() string

Name returns the provider identifier

func (*LinodeProvider) ValidateConfig

func (p *LinodeProvider) ValidateConfig(infra *config.InfrastructureConfig) error

ValidateConfig validates Linode-specific configuration

type Provider

type Provider interface {
	// Name returns the provider identifier (digitalocean, hetzner, aws, etc.)
	Name() string

	// Configure sets up the provider with credentials
	Configure(ctx *pulumi.Context, creds config.InfraCredentialsConfig) error

	// CreateSSHKey uploads/creates an SSH key and returns the key ID
	// publicKey: the SSH public key content
	// keyName: name for the key on the provider
	CreateSSHKey(ctx *pulumi.Context, publicKey string, keyName string) (pulumi.StringOutput, error)

	// CreateServer provisions a server and returns server IDs for firewall attachment
	// name: the config name (e.g., "web") used for state mapping
	// resourceName: the cloud resource name (e.g., "myproject-web") used to avoid naming conflicts
	// autoSSHKeyID: optional auto-generated SSH key ID to use if no SSH keys specified
	// autoSSHPublicKey: optional public key content (for providers like Linode that use content directly)
	CreateServer(ctx *pulumi.Context, name string, spec config.InfraServerSpec, region string, vpcID pulumi.StringInput, resourceName string, autoSSHKeyID pulumi.StringOutput, autoSSHPublicKey string) ([]pulumi.StringInput, error)

	// CreateVPC provisions a VPC/private network
	CreateVPC(ctx *pulumi.Context, name string, spec *config.InfraVPCConfig, region string) (pulumi.StringOutput, error)

	// CreateFirewall provisions firewall rules
	CreateFirewall(ctx *pulumi.Context, name string, spec *config.InfraFirewallConfig, serverIDs []pulumi.StringInput) error

	// ValidateConfig validates provider-specific configuration
	ValidateConfig(infra *config.InfrastructureConfig) error

	// GetDefaultImage returns the default OS image for this provider
	GetDefaultImage() string

	// GetDefaultSize returns the default server size for this provider
	GetDefaultSize() string
}

Provider interface that all cloud providers must implement

func Get

func Get(name string) (Provider, error)

Get returns a provider by name

func NewAWS

func NewAWS() Provider

NewAWS creates a new AWS provider

func NewDigitalOcean

func NewDigitalOcean() Provider

NewDigitalOcean creates a new DigitalOcean provider

func NewHetzner

func NewHetzner() Provider

NewHetzner creates a new Hetzner Cloud provider

func NewLinode

func NewLinode() Provider

NewLinode creates a new Linode provider

Jump to

Keyboard shortcuts

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