cloudinit

package
v0.2.4 Latest Latest
Warning

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

Go to latest
Published: Mar 1, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package cloudinit provides cloud-init configuration generation.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Generator

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

Generator generates cloud-init configuration files.

func NewGenerator

func NewGenerator() (*Generator, error)

NewGenerator creates a new cloud-init generator with embedded templates.

func (*Generator) GenerateMetaData

func (g *Generator) GenerateMetaData(input *MetaDataInput) (string, error)

GenerateMetaData generates cloud-init meta-data.

func (*Generator) GenerateNetworkConfig

func (g *Generator) GenerateNetworkConfig(input *NetworkConfigInput) (string, error)

GenerateNetworkConfig generates network-config YAML (Netplan v2).

func (*Generator) GenerateUserData

func (g *Generator) GenerateUserData(input *UserDataInput) (string, error)

GenerateUserData generates autoinstall user-data YAML.

func (*Generator) ValidateYAML

func (g *Generator) ValidateYAML(content string) error

ValidateYAML validates YAML syntax.

type MetaDataInput

type MetaDataInput struct {
	InstanceID string
	Hostname   string
}

MetaDataInput contains data for meta-data generation.

type NetworkConfigInput

type NetworkConfigInput struct {
	InterfaceName string   // e.g., "ens192" (default for VMware)
	IPAddress     string   // e.g., "192.168.1.10"
	CIDR          int      // e.g., 24
	Gateway       string   // e.g., "192.168.1.1"
	DNS           []string // e.g., ["8.8.8.8", "8.8.4.4"]
}

NetworkConfigInput contains data for network-config generation.

type UserDataInput

type UserDataInput struct {
	Hostname         string
	Username         string
	PasswordHash     string // Optional - bcrypt or SHA-512
	SSHPublicKeys    []string
	AllowPasswordSSH bool
	Locale           string   // e.g., "en_US.UTF-8"
	Timezone         string   // e.g., "UTC"
	KeyboardLayout   string   // e.g., "us"
	SwapSize         string   // e.g., "2G", "4G" - used in explicit storage config
	SwapSizeGB       int      // 0 disables swap partition
	Packages         []string // e.g., ["open-vm-tools", "curl"]
	UserGroups       string   // e.g., "sudo,adm,dialout"
	UserShell        string   // e.g., "/bin/bash"
	InterfaceName    string   // Guest NIC name (e.g., "ens192")
	// Data disk mount point (empty = no data disk, uses layout:lvm)
	DataDiskMountPath string // e.g., "/data"
	// Network (required for package installation during autoinstall)
	IPAddress string
	CIDR      int
	Gateway   string
	DNS       []string
}

UserDataInput contains data for autoinstall user-data generation.

Jump to

Keyboard shortcuts

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