Documentation
¶
Index ¶
- Variables
- func GetSupportedProviders() []string
- type AWSProvider
- func (p *AWSProvider) Configure(ctx *pulumi.Context, creds config.InfraCredentialsConfig) error
- func (p *AWSProvider) CreateFirewall(ctx *pulumi.Context, name string, spec *config.InfraFirewallConfig, ...) error
- func (p *AWSProvider) CreateSSHKey(ctx *pulumi.Context, publicKey string, keyName string) (pulumi.StringOutput, error)
- func (p *AWSProvider) CreateServer(ctx *pulumi.Context, name string, spec config.InfraServerSpec, region string, ...) ([]pulumi.StringInput, error)
- func (p *AWSProvider) CreateVPC(ctx *pulumi.Context, name string, spec *config.InfraVPCConfig, region string) (pulumi.StringOutput, error)
- func (p *AWSProvider) GetDefaultImage() string
- func (p *AWSProvider) GetDefaultSize() string
- func (p *AWSProvider) Name() string
- func (p *AWSProvider) ValidateConfig(infra *config.InfrastructureConfig) error
- type DigitalOceanProvider
- func (p *DigitalOceanProvider) Configure(ctx *pulumi.Context, creds config.InfraCredentialsConfig) error
- func (p *DigitalOceanProvider) CreateFirewall(ctx *pulumi.Context, name string, spec *config.InfraFirewallConfig, ...) error
- func (p *DigitalOceanProvider) CreateSSHKey(ctx *pulumi.Context, publicKey string, keyName string) (pulumi.StringOutput, error)
- func (p *DigitalOceanProvider) CreateServer(ctx *pulumi.Context, name string, spec config.InfraServerSpec, region string, ...) ([]pulumi.StringInput, error)
- func (p *DigitalOceanProvider) CreateVPC(ctx *pulumi.Context, name string, spec *config.InfraVPCConfig, region string) (pulumi.StringOutput, error)
- func (p *DigitalOceanProvider) GetDefaultImage() string
- func (p *DigitalOceanProvider) GetDefaultSize() string
- func (p *DigitalOceanProvider) Name() string
- func (p *DigitalOceanProvider) ValidateConfig(infra *config.InfrastructureConfig) error
- type HetznerProvider
- func (p *HetznerProvider) Configure(ctx *pulumi.Context, creds config.InfraCredentialsConfig) error
- func (p *HetznerProvider) CreateFirewall(ctx *pulumi.Context, name string, spec *config.InfraFirewallConfig, ...) error
- func (p *HetznerProvider) CreateSSHKey(ctx *pulumi.Context, publicKey string, keyName string) (pulumi.StringOutput, error)
- func (p *HetznerProvider) CreateServer(ctx *pulumi.Context, name string, spec config.InfraServerSpec, region string, ...) ([]pulumi.StringInput, error)
- func (p *HetznerProvider) CreateVPC(ctx *pulumi.Context, name string, spec *config.InfraVPCConfig, region string) (pulumi.StringOutput, error)
- func (p *HetznerProvider) GetDefaultImage() string
- func (p *HetznerProvider) GetDefaultSize() string
- func (p *HetznerProvider) Name() string
- func (p *HetznerProvider) ValidateConfig(infra *config.InfrastructureConfig) error
- type LinodeProvider
- func (p *LinodeProvider) Configure(ctx *pulumi.Context, creds config.InfraCredentialsConfig) error
- func (p *LinodeProvider) CreateFirewall(ctx *pulumi.Context, name string, spec *config.InfraFirewallConfig, ...) error
- func (p *LinodeProvider) CreateSSHKey(ctx *pulumi.Context, publicKey string, keyName string) (pulumi.StringOutput, error)
- func (p *LinodeProvider) CreateServer(ctx *pulumi.Context, name string, spec config.InfraServerSpec, region string, ...) ([]pulumi.StringInput, error)
- func (p *LinodeProvider) CreateVPC(ctx *pulumi.Context, name string, spec *config.InfraVPCConfig, region string) (pulumi.StringOutput, error)
- func (p *LinodeProvider) GetDefaultImage() string
- func (p *LinodeProvider) GetDefaultSize() string
- func (p *LinodeProvider) Name() string
- func (p *LinodeProvider) ValidateConfig(infra *config.InfrastructureConfig) error
- type Provider
Constants ¶
This section is empty.
Variables ¶
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) 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 ¶
func (p *DigitalOceanProvider) Configure(ctx *pulumi.Context, creds config.InfraCredentialsConfig) error
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 ¶
func (p *HetznerProvider) Configure(ctx *pulumi.Context, creds config.InfraCredentialsConfig) error
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 NewDigitalOcean ¶
func NewDigitalOcean() Provider
NewDigitalOcean creates a new DigitalOcean provider