Documentation
¶
Overview ¶
Package tofu provides OpenTofu execution capabilities.
Index ¶
- Constants
- Variables
- func BinaryName() string
- func DefaultBinary() string
- func EnsureStateDir(baseDir string) error
- func HasTerraformFiles(dir string) (bool, error)
- func IsTimeoutError(err error) bool
- func OfflineCLIConfig(providersDir string) []byte
- func PackagedBinaryPath() (string, bool)
- func PackagedProvidersDir() (string, bool)
- func RequireLocalProviderMirror(dir string) error
- func ValidateWorkDir(dir string) error
- type Executor
- func (e *Executor) Apply(ctx context.Context, planFile string) (*Result, error)
- func (e *Executor) Destroy(ctx context.Context) (*Result, error)
- func (e *Executor) Format(ctx context.Context) (*Result, error)
- func (e *Executor) GetWorkDir() string
- func (e *Executor) Graph(ctx context.Context) (*Result, error)
- func (e *Executor) Import(ctx context.Context, address, id string) (*Result, error)
- func (e *Executor) Init(ctx context.Context) (*Result, error)
- func (e *Executor) IsInstalled() bool
- func (e *Executor) Output(ctx context.Context) (*Result, error)
- func (e *Executor) Plan(ctx context.Context, outFile string, destroy bool) (*Result, error)
- func (e *Executor) Providers(ctx context.Context) (*Result, error)
- func (e *Executor) Refresh(ctx context.Context) (*Result, error)
- func (e *Executor) SetAutoApprove(autoApprove bool)
- func (e *Executor) SetWorkDir(dir string)
- func (e *Executor) Show(ctx context.Context, planFile string) (*Result, error)
- func (e *Executor) State(ctx context.Context) (*Result, error)
- func (e *Executor) Taint(ctx context.Context, address string) (*Result, error)
- func (e *Executor) Untaint(ctx context.Context, address string) (*Result, error)
- func (e *Executor) Validate(ctx context.Context) (*Result, error)
- func (e *Executor) Version(ctx context.Context) (string, error)
- type ExecutorOption
- func WithAutoApprove(autoApprove bool) ExecutorOption
- func WithBinary(binary string) ExecutorOption
- func WithEnv(values ...string) ExecutorOption
- func WithTimeout(timeout time.Duration) ExecutorOption
- func WithWorkDir(dir string) ExecutorOption
- func WithoutInheritedEnv(names ...string) ExecutorOption
- type PlanChanges
- type Result
- type TimeoutError
Constants ¶
const ( // ProvidersDirEnv overrides the packaged OpenTofu provider mirror. ProvidersDirEnv = "STACKKIT_TOFU_PROVIDERS_DIR" // ProvidersDirName is the mirror directory shipped beside the packaged // tofu binary in every release archive. ProvidersDirName = "providers" // ProviderRegistryHost is the registry namespace the mirror serves. ProviderRegistryHost = "registry.opentofu.org" // PinnedLocalProviderVersion is the hashicorp/local release that // scripts/release/fetch-opentofu-providers.sh packages. The rendered // Stage 1 roots constrain the provider to a range that admits it. PinnedLocalProviderVersion = "2.5.3" )
Variables ¶
var ErrProviderMirrorMissing = errors.New("packaged OpenTofu provider mirror is missing")
ErrProviderMirrorMissing reports that the packaged offline provider mirror is absent or incomplete for this platform.
var OfflineInheritedEnv = []string{
"TF_PLUGIN_CACHE_DIR",
"TF_PLUGIN_CACHE_MAY_BREAK_DEPENDENCY_LOCK_FILE",
"TF_CLI_CONFIG_FILE",
"TF_CLI_ARGS",
"TF_CLI_ARGS_init",
"TF_CLI_ARGS_plan",
"TF_CLI_ARGS_apply",
"TF_DATA_DIR",
"TF_WORKSPACE",
"TOFU_CLI_CONFIG_FILE",
}
OfflineInheritedEnv names host variables that could redirect provider installation, add CLI arguments, or move the working data directory. The runtime executor removes them before every OpenTofu process it starts.
Functions ¶
func BinaryName ¶
func BinaryName() string
BinaryName returns the OpenTofu executable name for the current platform.
func DefaultBinary ¶
func DefaultBinary() string
DefaultBinary resolves the OpenTofu binary used by regular execution. It intentionally avoids PATH fallback so a host-installed OpenTofu cannot make StackKit appear release-ready when the package is missing its own copy.
func EnsureStateDir ¶
EnsureStateDir ensures the state directory exists
func HasTerraformFiles ¶
HasTerraformFiles checks if directory contains .tf files
func IsTimeoutError ¶
IsTimeoutError checks if an error is a timeout error
func OfflineCLIConfig ¶ added in v0.46.5
OfflineCLIConfig renders a CLI configuration that installs every registry.opentofu.org provider from the filesystem mirror and forbids direct registry installation, so tofu init never reaches the network.
func PackagedBinaryPath ¶
PackagedBinaryPath returns the StackKit-packaged OpenTofu binary path. It intentionally does not fall back to PATH: product and release tests must prove that OpenTofu ships with StackKit, not that the host happens to have it.
func PackagedProvidersDir ¶ added in v0.46.5
PackagedProvidersDir returns the StackKit-packaged provider mirror. Like PackagedBinaryPath it never consults PATH or a host plugin cache: the override is STACKKIT_TOFU_PROVIDERS_DIR, otherwise providers/ beside the executable, beside bin/, or in the Debian package's lib directory.
func RequireLocalProviderMirror ¶ added in v0.46.5
RequireLocalProviderMirror verifies that dir holds the pinned hashicorp/local provider for the running platform in the unpacked filesystem-mirror layout. It fails closed with an actionable error.
func ValidateWorkDir ¶
ValidateWorkDir validates the working directory
Types ¶
type Executor ¶
type Executor struct {
// contains filtered or unexported fields
}
Executor handles OpenTofu command execution
func NewExecutor ¶
func NewExecutor(opts ...ExecutorOption) *Executor
NewExecutor creates a new OpenTofu executor
func (*Executor) GetWorkDir ¶
GetWorkDir returns the working directory
func (*Executor) IsInstalled ¶
IsInstalled checks if tofu is installed
func (*Executor) SetAutoApprove ¶
SetAutoApprove sets the auto-approve flag dynamically
func (*Executor) SetWorkDir ¶
SetWorkDir sets the working directory
type ExecutorOption ¶
type ExecutorOption func(*Executor)
ExecutorOption configures the Executor
func WithAutoApprove ¶
func WithAutoApprove(autoApprove bool) ExecutorOption
WithAutoApprove enables auto-approve for apply/destroy
func WithBinary ¶
func WithBinary(binary string) ExecutorOption
WithBinary sets the tofu binary path
func WithEnv ¶
func WithEnv(values ...string) ExecutorOption
WithEnv appends environment values for OpenTofu commands.
func WithTimeout ¶
func WithTimeout(timeout time.Duration) ExecutorOption
WithTimeout sets the execution timeout
func WithWorkDir ¶
func WithWorkDir(dir string) ExecutorOption
WithWorkDir sets the working directory
func WithoutInheritedEnv ¶ added in v0.46.5
func WithoutInheritedEnv(names ...string) ExecutorOption
WithoutInheritedEnv drops the named variables from the inherited process environment before WithEnv values are appended. It lets a caller guarantee, for example, that no host plugin cache or CLI argument override reaches an offline OpenTofu run.
type PlanChanges ¶
PlanChanges represents changes detected by plan
func ParsePlanOutput ¶
func ParsePlanOutput(output string) *PlanChanges
ParsePlanOutput parses plan output to extract changes
type TimeoutError ¶
TimeoutError represents a command timeout
func (*TimeoutError) Error ¶
func (e *TimeoutError) Error() string