remote

package
v0.0.0-...-53190cb Latest Latest
Warning

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

Go to latest
Published: Oct 31, 2024 License: MIT Imports: 30 Imported by: 0

Documentation

Overview

Package remote contains code for configuring remote state storage.

Index

Constants

View Source
const (
	DefaultS3BucketAccessLoggingTargetPrefix = "TFStateLogs/"
	SidRootPolicy                            = "RootAccess"
	SidEnforcedTLSPolicy                     = "EnforcedTLS"
)
View Source
const DefaultPathToLocalStateFile = "terraform.tfstate"

DefaultPathToLocalStateFile is the default path to the tfstate file when storing Terraform state locally.

View Source
const DefaultPathToRemoteStateFile = "terraform.tfstate"

DefaultPathToRemoteStateFile is the default folder location for the local copy of the state file when using remote state storage in Terraform.

View Source
const MaxRetriesWaitingForGcsBucket = 12
View Source
const MaxRetriesWaitingForS3Bucket = 12
View Source
const SleepBetweenRetriesWaitingForGcsBucket = 5 * time.Second
View Source
const SleepBetweenRetriesWaitingForS3Bucket = 5 * time.Second

Variables

View Source
var (
	ErrRemoteBackendMissing             = goErrors.New("the remote_state.backend field cannot be empty")
	ErrGenerateCalledWithNoGenerateAttr = goErrors.New("generate code routine called when no generate attribute is configured")
)

Custom errors

Functions

func AddLabelsToGCSBucket

func AddLabelsToGCSBucket(gcsClient *storage.Client, config *ExtendedRemoteStateConfigGCS, terragruntOptions *options.TerragruntOptions) error

func ConfigValuesEqual

func ConfigValuesEqual(config map[string]interface{}, existingBackend *TerraformBackend, terragruntOptions *options.TerragruntOptions) bool

ConfigValuesEqual returns true if the given config is in any way different than what is configured for the backend

func CreateGCSBucket

func CreateGCSBucket(gcsClient *storage.Client, config *ExtendedRemoteStateConfigGCS, terragruntOptions *options.TerragruntOptions) error

CreateGCSBucket creates the GCS bucket specified in the given config.

func CreateGCSBucketWithVersioning

func CreateGCSBucketWithVersioning(gcsClient *storage.Client, config *ExtendedRemoteStateConfigGCS, terragruntOptions *options.TerragruntOptions) error

CreateGCSBucketWithVersioning creates the given GCS bucket and enables versioning for it.

func CreateGCSClient

func CreateGCSClient(gcsConfigRemote RemoteStateConfigGCS) (*storage.Client, error)

CreateGCSClient creates an authenticated client for GCS

func CreateLogsS3BucketIfNecessary

func CreateLogsS3BucketIfNecessary(ctx context.Context, s3Client *s3.S3, logsBucketName *string, terragruntOptions *options.TerragruntOptions) error

func CreateS3Bucket

func CreateS3Bucket(s3Client *s3.S3, bucket *string, terragruntOptions *options.TerragruntOptions) error

CreateS3Bucket creates the S3 bucket specified in the given config.

func CreateS3BucketWithVersioningSSEncryptionAndAccessLogging

func CreateS3BucketWithVersioningSSEncryptionAndAccessLogging(ctx context.Context, s3Client *s3.S3, config *ExtendedRemoteStateConfigS3, terragruntOptions *options.TerragruntOptions) error

CreateS3BucketWithVersioningSSEncryptionAndAccessLogging creates the given S3 bucket and enable versioning for it.

func CreateS3Client

func CreateS3Client(config *awshelper.AwsSessionConfig, terragruntOptions *options.TerragruntOptions) (*s3.S3, error)

CreateS3Client creates an authenticated client for DynamoDB.

func DoesGCSBucketExist

func DoesGCSBucketExist(gcsClient *storage.Client, config *RemoteStateConfigGCS) bool

DoesGCSBucketExist returns true if the GCS bucket specified in the given config exists and the current user has the ability to access it.

func DoesS3BucketExist

func DoesS3BucketExist(s3Client *s3.S3, bucket *string) bool

DoesS3BucketExist checks if the S3 bucket specified in the given config exists.

Returns true if the S3 bucket specified in the given config exists and the current user has the ability to access it.

func EnableAccessLoggingForS3BucketWide

func EnableAccessLoggingForS3BucketWide(s3Client *s3.S3, config *ExtendedRemoteStateConfigS3, terragruntOptions *options.TerragruntOptions) error

EnableAccessLoggingForS3BucketWide enables bucket-wide Access Logging for the AWS S3 bucket specified in the given config.

func EnableEnforcedTLSAccesstoS3Bucket

func EnableEnforcedTLSAccesstoS3Bucket(s3Client *s3.S3, bucket string, config *ExtendedRemoteStateConfigS3, terragruntOptions *options.TerragruntOptions) error

EnableEnforcedTLSAccesstoS3Bucket adds a policy to enforce TLS based access to the bucket.

func EnablePublicAccessBlockingForS3Bucket

func EnablePublicAccessBlockingForS3Bucket(s3Client *s3.S3, bucketName string, terragruntOptions *options.TerragruntOptions) error

EnablePublicAccessBlockingForS3Bucket blocks all public access policies on the bucket and objects. These settings ensure that a misconfiguration of the bucket or objects will not accidentally enable public access to those items. See https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html for more information.

func EnableRootAccesstoS3Bucket

func EnableRootAccesstoS3Bucket(s3Client *s3.S3, config *ExtendedRemoteStateConfigS3, terragruntOptions *options.TerragruntOptions) error

EnableRootAccesstoS3Bucket adds a policy to allow root access to the bucket.

func EnableSSEForS3BucketWide

func EnableSSEForS3BucketWide(s3Client *s3.S3, bucketName string, algorithm string, config *ExtendedRemoteStateConfigS3, terragruntOptions *options.TerragruntOptions) error

EnableSSEForS3BucketWide enables bucket-wide Server-Side Encryption for the AWS S3 bucket specified in the given config.

func EnableVersioningForS3Bucket

func EnableVersioningForS3Bucket(s3Client *s3.S3, config *RemoteStateConfigS3, terragruntOptions *options.TerragruntOptions) error

EnableVersioningForS3Bucket enables versioning for the S3 bucket specified in the given config.

func GCSConfigValuesEqual

func GCSConfigValuesEqual(config map[string]interface{}, existingBackend *TerraformBackend, terragruntOptions *options.TerragruntOptions) bool

GCSConfigValuesEqual returns true if the given config is in any way different than what is configured for the backend.

func TagS3Bucket

func TagS3Bucket(s3Client *s3.S3, config *ExtendedRemoteStateConfigS3, terragruntOptions *options.TerragruntOptions) error

func TagS3BucketAccessLogging

func TagS3BucketAccessLogging(s3Client *s3.S3, config *ExtendedRemoteStateConfigS3, terragruntOptions *options.TerragruntOptions) error

func UpdateLockTableSetSSEncryptionOnIfNecessary

func UpdateLockTableSetSSEncryptionOnIfNecessary(s3Config *RemoteStateConfigS3, config *ExtendedRemoteStateConfigS3, terragruntOptions *options.TerragruntOptions) error

UpdateLockTableSetSSEncryptionOnIfNecessary updates a table for locks in DynamoDB if the user has configured a lock table and the table's server-side encryption isn't turned on.

func ValidatePublicAccessBlock

func ValidatePublicAccessBlock(output *s3.GetPublicAccessBlockOutput) (bool, error)

func ValidateS3Config

func ValidateS3Config(extendedConfig *ExtendedRemoteStateConfigS3) error

ValidateS3Config validates all the parameters of the given S3 remote state configuration.

func WaitUntilGCSBucketExists

func WaitUntilGCSBucketExists(gcsClient *storage.Client, config *RemoteStateConfigGCS, terragruntOptions *options.TerragruntOptions) error

WaitUntilGCSBucketExists waits for the GCS bucket specified in the given config to be created.

GCP is eventually consistent, so after creating a GCS bucket, this method can be used to wait until the information about that GCS bucket has propagated everywhere.

func WaitUntilS3BucketExists

func WaitUntilS3BucketExists(s3Client *s3.S3, config *RemoteStateConfigS3, terragruntOptions *options.TerragruntOptions) error

WaitUntilS3BucketExists waits until the given S3 bucket exists.

AWS is eventually consistent, so after creating an S3 bucket, this method can be used to wait until the information about that S3 bucket has propagated everywhere.

func WrapMapToSingleLineHcl

func WrapMapToSingleLineHcl(m map[string]interface{}) string

WrapMapToSingleLineHcl - This is a workaround to convert a map[string]interface{} to a single line HCL string.

Types

type BucketCreationNotAllowed

type BucketCreationNotAllowed string

func (BucketCreationNotAllowed) Error

func (bucketName BucketCreationNotAllowed) Error() string

type CantParseTerraformStateFileError

type CantParseTerraformStateFileError struct {
	Path          string
	UnderlyingErr error
}

CantParseTerraformStateFileError error that occurs when we can't parse the Terraform state file.

func (CantParseTerraformStateFileError) Error

type ExtendedRemoteStateConfigGCS

type ExtendedRemoteStateConfigGCS struct {
	Project                string            `mapstructure:"project"`
	Location               string            `mapstructure:"location"`
	GCSBucketLabels        map[string]string `mapstructure:"gcs_bucket_labels"`
	SkipBucketVersioning   bool              `mapstructure:"skip_bucket_versioning"`
	SkipBucketCreation     bool              `mapstructure:"skip_bucket_creation"`
	EnableBucketPolicyOnly bool              `mapstructure:"enable_bucket_policy_only"`
	// contains filtered or unexported fields
}

ExtendedRemoteStateConfigGCS is a struct that contains the GCS specific configuration options. * * We use this construct to separate the config key 'gcs_bucket_labels' from the others, as they * are specific to the gcs backend, but only used by terragrunt to tag the gcs bucket in case it * has to create them.

type ExtendedRemoteStateConfigS3

type ExtendedRemoteStateConfigS3 struct {
	RemoteStateConfigS3 RemoteStateConfigS3 `mapstructure:",squash"`

	S3BucketTags                                 map[string]string `mapstructure:"s3_bucket_tags"`
	DynamotableTags                              map[string]string `mapstructure:"dynamodb_table_tags"`
	AccessLoggingBucketTags                      map[string]string `mapstructure:"accesslogging_bucket_tags"`
	SkipCredentialsValidation                    bool              `mapstructure:"skip_credentials_validation"`
	SkipBucketVersioning                         bool              `mapstructure:"skip_bucket_versioning"`
	SkipBucketSSEncryption                       bool              `mapstructure:"skip_bucket_ssencryption"`
	SkipBucketAccessLogging                      bool              `mapstructure:"skip_bucket_accesslogging"`
	SkipBucketRootAccess                         bool              `mapstructure:"skip_bucket_root_access"`
	SkipBucketEnforcedTLS                        bool              `mapstructure:"skip_bucket_enforced_tls"`
	SkipBucketPublicAccessBlocking               bool              `mapstructure:"skip_bucket_public_access_blocking"`
	DisableBucketUpdate                          bool              `mapstructure:"disable_bucket_update"`
	EnableLockTableSSEncryption                  bool              `mapstructure:"enable_lock_table_ssencryption"`
	DisableAWSClientChecksums                    bool              `mapstructure:"disable_aws_client_checksums"`
	AccessLoggingBucketName                      string            `mapstructure:"accesslogging_bucket_name"`
	AccessLoggingTargetObjectPartitionDateSource string            `mapstructure:"accesslogging_target_object_partition_date_source"`
	AccessLoggingTargetPrefix                    string            `mapstructure:"accesslogging_target_prefix"`
	SkipAccessLoggingBucketACL                   bool              `mapstructure:"skip_accesslogging_bucket_acl"`
	SkipAccessLoggingBucketEnforcedTLS           bool              `mapstructure:"skip_accesslogging_bucket_enforced_tls"`
	SkipAccessLoggingBucketPublicAccessBlocking  bool              `mapstructure:"skip_accesslogging_bucket_public_access_blocking"`
	SkipAccessLoggingBucketSSEncryption          bool              `mapstructure:"skip_accesslogging_bucket_ssencryption"`
	BucketSSEAlgorithm                           string            `mapstructure:"bucket_sse_algorithm"`
	BucketSSEKMSKeyID                            string            `mapstructure:"bucket_sse_kms_key_id"`
}

ExtendedRemoteStateConfigS3 is a struct that contains the RemoteStateConfigS3 struct and additional * configuration options that are specific to the S3 backend. This struct is used to parse the configuration * from the Terragrunt configuration file. * * We use this construct to separate the three config keys 's3_bucket_tags', 'dynamodb_table_tags' * and 'accesslogging_bucket_tags' from the others, as they are specific to the s3 backend, * but only used by terragrunt to tag the s3 bucket, the dynamo db and the s3 bucket used to the * access logs, in case it has to create them.

func ParseExtendedS3Config

func ParseExtendedS3Config(config map[string]interface{}) (*ExtendedRemoteStateConfigS3, error)

ParseExtendedS3Config parses the given map into an extended S3 config.

func (*ExtendedRemoteStateConfigS3) CreateS3LoggingInput

func (c *ExtendedRemoteStateConfigS3) CreateS3LoggingInput() s3.PutBucketLoggingInput

CreateS3LoggingInput builds AWS S3 logging input struct from the configuration.

func (*ExtendedRemoteStateConfigS3) GetAwsSessionConfig

func (c *ExtendedRemoteStateConfigS3) GetAwsSessionConfig() *awshelper.AwsSessionConfig

GetAwsSessionConfig builds a session config for AWS related requests from the RemoteStateConfigS3 configuration.

type GCSInitializer

type GCSInitializer struct{}

func (GCSInitializer) GetTerraformInitArgs

func (initializer GCSInitializer) GetTerraformInitArgs(config map[string]interface{}) map[string]interface{}

GetTerraformInitArgs returns the subset of the given config that should be passed to terraform init when initializing the remote state.

func (GCSInitializer) Initialize

func (initializer GCSInitializer) Initialize(ctx context.Context, remoteState *RemoteState, terragruntOptions *options.TerragruntOptions) error

Initialize the remote state GCS bucket specified in the given config. This function will validate the config parameters, create the GCS bucket if it doesn't already exist, and check that versioning is enabled.

func (GCSInitializer) NeedsInitialization

func (initializer GCSInitializer) NeedsInitialization(remoteState *RemoteState, existingBackend *TerraformBackend, terragruntOptions *options.TerragruntOptions) (bool, error)

NeedsInitialization returns true if the GCS bucket specified in the given config does not exist or if the bucket exists but versioning is not enabled.

Returns true if:

1. Any of the existing backend settings are different than the current config 2. The configured GCS bucket does not exist

type InvalidAccessLoggingBucketEncryption

type InvalidAccessLoggingBucketEncryption struct {
	BucketSSEAlgorithm string
}

func (InvalidAccessLoggingBucketEncryption) Error

type MaxRetriesWaitingForS3ACLExceeded

type MaxRetriesWaitingForS3ACLExceeded string

func (MaxRetriesWaitingForS3ACLExceeded) Error

type MaxRetriesWaitingForS3BucketExceeded

type MaxRetriesWaitingForS3BucketExceeded string

func (MaxRetriesWaitingForS3BucketExceeded) Error

type MissingRequiredGCSRemoteStateConfig

type MissingRequiredGCSRemoteStateConfig string

func (MissingRequiredGCSRemoteStateConfig) Error

func (configName MissingRequiredGCSRemoteStateConfig) Error() string

type MissingRequiredS3RemoteStateConfig

type MissingRequiredS3RemoteStateConfig string

func (MissingRequiredS3RemoteStateConfig) Error

func (configName MissingRequiredS3RemoteStateConfig) Error() string

type MultipleTagsDeclarations

type MultipleTagsDeclarations string

func (MultipleTagsDeclarations) Error

func (target MultipleTagsDeclarations) Error() string

type RemoteState

type RemoteState struct {
	Backend                       string                 `mapstructure:"backend" json:"Backend"`
	DisableInit                   bool                   `mapstructure:"disable_init" json:"DisableInit"`
	DisableDependencyOptimization bool                   `mapstructure:"disable_dependency_optimization" json:"DisableDependencyOptimization"`
	Generate                      *RemoteStateGenerate   `mapstructure:"generate" json:"Generate"`
	Config                        map[string]interface{} `mapstructure:"config" json:"Config"`
}

RemoteState is the configuration for Terraform remote state NOTE: If any attributes are added here, be sure to add it to remoteStateAsCty in config/config_as_cty.go

func (*RemoteState) DiffersFrom

func (state *RemoteState) DiffersFrom(existingBackend *TerraformBackend, terragruntOptions *options.TerragruntOptions) bool

DiffersFrom returns true if this remote state is different than the given remote state that is currently being used by terraform.

func (*RemoteState) FillDefaults

func (state *RemoteState) FillDefaults()

FillDefaults fills in any default configuration for remote state

func (*RemoteState) GenerateTerraformCode

func (state *RemoteState) GenerateTerraformCode(terragruntOptions *options.TerragruntOptions) error

GenerateTerraformCode generates the terraform code for configuring remote state backend.

func (*RemoteState) Initialize

func (state *RemoteState) Initialize(ctx context.Context, terragruntOptions *options.TerragruntOptions) error

Initialize performs any actions necessary to initialize the remote state before it's used for storage. For example, if you're using S3 or GCS for remote state storage, this may create the bucket if it doesn't exist already.

func (*RemoteState) NeedsInit

func (state *RemoteState) NeedsInit(terragruntOptions *options.TerragruntOptions) (bool, error)

NeedsInit returns true if remote state needs to be configured. This will be the case when:

1. Remote state auto-initialization has been disabled 2. Remote state has not already been configured 3. Remote state has been configured, but with a different configuration 4. The remote state initializer for this backend type, if there is one, says initialization is necessary

func (*RemoteState) String

func (state *RemoteState) String() string

func (RemoteState) ToTerraformInitArgs

func (state RemoteState) ToTerraformInitArgs() []string

ToTerraformInitArgs converts the RemoteState config into the format used by the terraform init command

func (*RemoteState) Validate

func (state *RemoteState) Validate() error

Validate that the remote state is configured correctly

type RemoteStateConfigGCS

type RemoteStateConfigGCS struct {
	Bucket        string `mapstructure:"bucket"`
	Credentials   string `mapstructure:"credentials"`
	AccessToken   string `mapstructure:"access_token"`
	Prefix        string `mapstructure:"prefix"`
	Path          string `mapstructure:"path"`
	EncryptionKey string `mapstructure:"encryption_key"`

	ImpersonateServiceAccount          string   `mapstructure:"impersonate_service_account"`
	ImpersonateServiceAccountDelegates []string `mapstructure:"impersonate_service_account_delegates"`
}

RemoteStateConfigGCS is a representation of the configuration options available for GCS remote state.

type RemoteStateConfigS3

type RemoteStateConfigS3 struct {
	Encrypt          bool                          `mapstructure:"encrypt"`
	Bucket           string                        `mapstructure:"bucket"`
	Key              string                        `mapstructure:"key"`
	Region           string                        `mapstructure:"region"`
	Endpoint         string                        `mapstructure:"endpoint"`
	DynamoDBEndpoint string                        `mapstructure:"dynamodb_endpoint"`
	Profile          string                        `mapstructure:"profile"`
	RoleArn          string                        `mapstructure:"role_arn"`     // Deprecated in Terraform version 1.6 or newer.
	ExternalID       string                        `mapstructure:"external_id"`  // Deprecated in Terraform version 1.6 or newer.
	SessionName      string                        `mapstructure:"session_name"` // Deprecated in Terraform version 1.6 or newer.
	LockTable        string                        `mapstructure:"lock_table"`   // Deprecated in Terraform version 0.13 or newer.
	DynamoDBTable    string                        `mapstructure:"dynamodb_table"`
	CredsFilename    string                        `mapstructure:"shared_credentials_file"`
	S3ForcePathStyle bool                          `mapstructure:"force_path_style"`
	AssumeRole       RemoteStateConfigS3AssumeRole `mapstructure:"assume_role"`
}

RemoteStateConfigS3 is a representation of the configuration options available for S3 remote state.

func (*RemoteStateConfigS3) GetExternalID

func (s3Config *RemoteStateConfigS3) GetExternalID() string

GetExternalID returns the external ID defined in the AssumeRole struct or fallback to the top level argument deprecated in Terraform 1.6 The external ID is used to prevent confused deputy attacks.

func (*RemoteStateConfigS3) GetLockTableName

func (s3Config *RemoteStateConfigS3) GetLockTableName() string

GetLockTableName returns the name of the DynamoDB table used for locking.

The DynamoDB lock table attribute used to be called "lock_table", but has since been renamed to "dynamodb_table", and the old attribute name deprecated. The old attribute name has been eventually removed from Terraform starting with release 0.13. To maintain backwards compatibility, we support both names.

func (*RemoteStateConfigS3) GetSessionName

func (s3Config *RemoteStateConfigS3) GetSessionName() string

func (*RemoteStateConfigS3) GetSessionRoleArn

func (s3Config *RemoteStateConfigS3) GetSessionRoleArn() string

GetSessionRoleArn returns the role defined in the AssumeRole struct or fallback to the top level argument deprecated in Terraform 1.6

type RemoteStateConfigS3AssumeRole

type RemoteStateConfigS3AssumeRole struct {
	RoleArn     string `mapstructure:"role_arn"`
	ExternalID  string `mapstructure:"external_id"`
	SessionName string `mapstructure:"session_name"`
}

type RemoteStateGenerate

type RemoteStateGenerate struct {
	Path     string `cty:"path" mapstructure:"path"`
	IfExists string `cty:"if_exists" mapstructure:"if_exists"`
}

RemoteStateGenerate is code gen configuration for Terraform remote state.

type RemoteStateInitializer

type RemoteStateInitializer interface {
	// Return true if remote state needs to be initialized
	NeedsInitialization(remoteState *RemoteState, existingBackend *TerraformBackend, terragruntOptions *options.TerragruntOptions) (bool, error)

	// Initialize the remote state
	Initialize(ctx context.Context, remoteState *RemoteState, terragruntOptions *options.TerragruntOptions) error

	// Return the config that should be passed on to terraform via -backend-config cmd line param
	// Allows the Backends to filter and/or modify the configuration given from the user
	GetTerraformInitArgs(config map[string]interface{}) map[string]interface{}
}

type S3BucketUpdatesRequired

type S3BucketUpdatesRequired struct {
	Versioning    bool
	SSEEncryption bool
	RootAccess    bool
	EnforcedTLS   bool
	AccessLogging bool
	PublicAccess  bool
}

type S3Initializer

type S3Initializer struct{}

func (S3Initializer) GetTerraformInitArgs

func (s3Initializer S3Initializer) GetTerraformInitArgs(config map[string]interface{}) map[string]interface{}

func (S3Initializer) Initialize

func (s3Initializer S3Initializer) Initialize(ctx context.Context, remoteState *RemoteState, terragruntOptions *options.TerragruntOptions) error

Initialize the remote state S3 bucket specified in the given config. This function will validate the config parameters, create the S3 bucket if it doesn't already exist, and check that versioning is enabled.

func (S3Initializer) NeedsInitialization

func (s3Initializer S3Initializer) NeedsInitialization(remoteState *RemoteState, existingBackend *TerraformBackend, terragruntOptions *options.TerragruntOptions) (bool, error)

NeedsInitialization returns true if the remote state S3 bucket specified in the given config needs to be initialized.

Returns true if:

1. Any of the existing backend settings are different than the current config 2. The configured S3 bucket or DynamoDB table does not exist

type TerraformBackend

type TerraformBackend struct {
	Type   string                 `json:"Type"`
	Config map[string]interface{} `json:"Config"`
}

TerraformBackend represents the structure of the "backend" section in the Terraform .tfstate file.

type TerraformState

type TerraformState struct {
	Version int                    `json:"Version"`
	Serial  int                    `json:"Serial"`
	Backend *TerraformBackend      `json:"Backend"`
	Modules []TerraformStateModule `json:"Modules"`
}

TerraformState - represents the structure of the Terraform .tfstate file.

func ParseTerraformState

func ParseTerraformState(terraformStateData []byte) (*TerraformState, error)

ParseTerraformState parses the Terraform state file data from the provided byte slice.

func ParseTerraformStateFile

func ParseTerraformStateFile(path string) (*TerraformState, error)

ParseTerraformStateFile parses the Terraform .tfstate file located at the specified path.

func ParseTerraformStateFileFromLocation

func ParseTerraformStateFileFromLocation(backend string, config map[string]interface{},
	workingDir, dataDir string) (*TerraformState, error)

ParseTerraformStateFileFromLocation parses the Terraform .tfstate file. If a local backend is used then search the given path, or return nil if the file is missing. If the backend is not local then parse the Terraform .tfstate file from the location specified by workingDir. If no location is specified, search the current directory. If the file doesn't exist at any of the default locations, return nil.

func (*TerraformState) IsRemote

func (state *TerraformState) IsRemote() bool

IsRemote returns true if this Terraform state is configured for remote state storage.

type TerraformStateModule

type TerraformStateModule struct {
	Path      []string               `json:"Path"`
	Outputs   map[string]interface{} `json:"Outputs"`
	Resources map[string]interface{} `json:"Resources"`
}

TerraformStateModule represents the structure of a "module" section in the Terraform .tfstate file.

Jump to

Keyboard shortcuts

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