Documentation
¶
Index ¶
Constants ¶
const DEFAULT_MAX_FOLDERS_TO_CHECK = 100
const DEFAULT_MAX_RETRY_ATTEMPTS = 3
const DEFAULT_SLEEP = 5 * time.Second
const TerragruntCacheDir = ".terragrunt-cache"
Variables ¶
var RETRYABLE_ERRORS = []string{
"(?s).*Failed to load state.*tcp.*timeout.*",
"(?s).*Failed to load backend.*TLS handshake timeout.*",
"(?s).*Creating metric alarm failed.*request to update this alarm is in progress.*",
"(?s).*Error installing provider.*TLS handshake timeout.*",
"(?s).*Error configuring the backend.*TLS handshake timeout.*",
"(?s).*Error installing provider.*tcp.*timeout.*",
"NoSuchBucket: The specified bucket does not exist",
}
List of recurring transient errors encountered when calling terraform If any of these match, we'll retry the command
var RunTerragruntCommandNotSet = fmt.Errorf("The RunTerragrunt option has not been set on this TerragruntOptions object")
var TERRAFORM_COMMANDS_WITH_SUBCOMMAND = []string{
"debug",
"force-unlock",
"state",
}
Functions ¶
func DefaultWorkingAndDownloadDirs ¶ added in v0.16.2
func DefaultWorkingAndDownloadDirs(terragruntConfigPath string) (string, string, error)
Get the default working and download directories for the given Terragrunt config path
Types ¶
type TerragruntOptions ¶
type TerragruntOptions struct {
// Location of the Terragrunt config file
TerragruntConfigPath string
// Location of the terraform binary
TerraformPath string
// Current Terraform command being executed by Terragrunt
TerraformCommand string
// Version of terraform (obtained by running 'terraform version')
TerraformVersion *version.Version
// Whether we should prompt the user for confirmation or always assume "yes"
NonInteractive bool
// Whether we should automatically run terraform init if necessary when executing other commands
AutoInit bool
// CLI args that are intended for Terraform (i.e. all the CLI args except the --terragrunt ones)
TerraformCliArgs []string
// The working directory in which to run Terraform
WorkingDir string
// The logger to use for all logging
Logger *log.Logger
// Environment variables at runtime
Env map[string]string
// Download Terraform configurations from the specified source location into a temporary folder and run
// Terraform in that temporary folder
Source string
// If set to true, delete the contents of the temporary folder before downloading Terraform source code into it
SourceUpdate bool
// Download Terraform configurations specified in the Source parameter into this folder
DownloadDir string
// The ARN of an IAM Role to assume before running Terraform
IamRole string
// If set to true, continue running *-all commands even if a dependency has errors. This is mostly useful for 'output-all <some_variable>'. See https://github.com/gruntwork-io/terragrunt/issues/193
IgnoreDependencyErrors bool
// If set to true, skip any external dependencies when running *-all commands
IgnoreExternalDependencies bool
// If you want stdout to go somewhere other than os.stdout
Writer io.Writer
// If you want stderr to go somewhere other than os.stderr
ErrWriter io.Writer
// When searching the directory tree, this is the max folders to check before exiting with an error. This is
// exposed here primarily so we can set it to a low value at test time.
MaxFoldersToCheck int
// Whether we should automatically run terraform init if necessary when executing other commands
AutoRetry bool
// Maximum number of times to retry errors matching RetryableErrors
MaxRetryAttempts int
// Sleep is the duration in seconds to wait before retrying
Sleep time.Duration
// RetryableErrors is an array of regular expressions with RE2 syntax (https://github.com/google/re2/wiki/Syntax) that qualify for retrying
RetryableErrors []string
// Unix-style glob of directories to exclude when running *-all commands
ExcludeDirs []string
// Unix-style glob of directories to include when running *-all commands
IncludeDirs []string
// A command that can be used to run Terragrunt with the given options. This is useful for running Terragrunt
// multiple times (e.g. when spinning up a stack of Terraform modules). The actual command is normally defined
// in the cli package, which depends on almost all other packages, so we declare it here so that other
// packages can use the command without a direct reference back to the cli package (which would create a
// circular dependency).
RunTerragrunt func(*TerragruntOptions) error
}
TerragruntOptions represents options that configure the behavior of the Terragrunt program
func NewTerragruntOptions ¶ added in v0.6.0
func NewTerragruntOptions(terragruntConfigPath string) (*TerragruntOptions, error)
Create a new TerragruntOptions object with reasonable defaults for real usage
func NewTerragruntOptionsForTest ¶ added in v0.6.0
func NewTerragruntOptionsForTest(terragruntConfigPath string) (*TerragruntOptions, error)
Create a new TerragruntOptions object with reasonable defaults for test usage
func (*TerragruntOptions) AppendTerraformCliArgs ¶ added in v0.13.0
func (terragruntOptions *TerragruntOptions) AppendTerraformCliArgs(argsToAppend ...string)
Appends the given argsToAppend after the current TerraformCliArgs
func (*TerragruntOptions) Clone ¶ added in v0.6.0
func (terragruntOptions *TerragruntOptions) Clone(terragruntConfigPath string) *TerragruntOptions
Create a copy of this TerragruntOptions, but with different values for the given variables. This is useful for creating a TerragruntOptions that behaves the same way, but is used for a Terraform module in a different folder.
func (*TerragruntOptions) InsertTerraformCliArgs ¶ added in v0.13.0
func (terragruntOptions *TerragruntOptions) InsertTerraformCliArgs(argsToInsert ...string)
Inserts the given argsToInsert after the terraform command argument, but before the remaining args