#terragrunt (2020-07)
Terragrunt discussions
Archive: https://archive.sweetops.com/terragrunt/
2020-07-22
![Josh Hudson avatar](https://secure.gravatar.com/avatar/55cdc6567fb11b87418d9f8ceab895d0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0013-72.png)
Has anyone tried using terragrunt with tf 0.13.x? I’m curious how the module count/each will incorporate w/ terragrunt’s wrapping of tf modules.
![Josh Hudson avatar](https://secure.gravatar.com/avatar/55cdc6567fb11b87418d9f8ceab895d0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0013-72.png)
![Josh Hudson avatar](https://secure.gravatar.com/avatar/55cdc6567fb11b87418d9f8ceab895d0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0013-72.png)
Since terragrunt handles module instantiation, rather you than defining module "my_module {
, how would we pass in a count/each?
![Josh Hudson avatar](https://secure.gravatar.com/avatar/55cdc6567fb11b87418d9f8ceab895d0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0013-72.png)
Presumably by extending https://terragrunt.gruntwork.io/docs/reference/config-blocks-and-attributes/#terraform to handle count/for_each, but curious if anyone has any details.
2020-07-23
![Adrian avatar](https://avatars.slack-edge.com/2023-10-26/6125977387504_c19919754493261edb59_72.jpg)
I’ve got Error: No valid credential sources found for AWS Provider.
from yestarday, anyone else has that problem?
![joshmyers avatar](https://avatars.slack-edge.com/2018-11-20/483958217281_8117d6f6c62807ce9912_72.jpg)
Nope.
![Adrian avatar](https://avatars.slack-edge.com/2023-10-26/6125977387504_c19919754493261edb59_72.jpg)
When tried to migrate terraform code to terraform cloud using a chain of aws cli profiles, which assumes a role, the terraform cloud AWS provider fails to find credentials file, as the same credent…
![joshmyers avatar](https://avatars.slack-edge.com/2018-11-20/483958217281_8117d6f6c62807ce9912_72.jpg)
Ah, you didn’t mention Terraform cloud. Not using that.
![Adrian avatar](https://avatars.slack-edge.com/2023-10-26/6125977387504_c19919754493261edb59_72.jpg)
downgrading aws.provider from 2.70 to 2.69 solve the issue
# Generate an AWS provider block
generate "provider" {
path = "provider.tf"
if_exists = "overwrite_terragrunt"
contents = <<EOF
provider "aws" {
region = "${local.vars.aws_region}"
profile = "${local.aws_profile}"
version = "<= 2.69"
# Only these AWS Account IDs may be operated on by this template
# allowed_account_ids = ["${local.vars.aws_account_id}"]
}
EOF
}
![Adrian avatar](https://avatars.slack-edge.com/2023-10-26/6125977387504_c19919754493261edb59_72.jpg)
and I’m using local terraform/terragrunt setup
![som.ban.mca avatar](https://secure.gravatar.com/avatar/6ab3680918df75956cc346a10bd86a85.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0001-72.png)
@som.ban.mca has joined the channel
2020-07-27
![jason einon avatar](https://secure.gravatar.com/avatar/524502968f1e213eb0261fad700ad291.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png)
hey all, just starting the journey with terragrunt, I have a look around, however cant find any great example repo’s that are using gcp and have a gcs as the backend, anyone have any good examples to share?
![jason einon avatar](https://secure.gravatar.com/avatar/524502968f1e213eb0261fad700ad291.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png)
Strategy defined and poc working… happy to help anyone who has similar starting out
questions
![ninja avatar](https://secure.gravatar.com/avatar/8d768e18afa769258b75c4c2b71c9279.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0000-72.png)
hi, i am getting started with terragrunt. do you mind sharing what helped you? thanks!
2020-07-28
2020-07-29
![Milosb avatar](https://avatars.slack-edge.com/2020-02-24/966891046949_8b28874492925e3ee6dc_72.jpg)
Do you find it difficult to search through official terragrunt documentation ? When it was on git I could just ctrl+f easily, and find what I need in second.
![jason einon avatar](https://secure.gravatar.com/avatar/524502968f1e213eb0261fad700ad291.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png)
yes this is the resource i used
2020-07-30
![jason einon avatar](https://secure.gravatar.com/avatar/524502968f1e213eb0261fad700ad291.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png)
back again I’m trying to get a clean way to pass in a project var into the provider, as im splitting out my infrastructure across projects.
![jason einon avatar](https://secure.gravatar.com/avatar/524502968f1e213eb0261fad700ad291.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png)
has anyone done this before… this is in google cloud btw
![jason einon avatar](https://secure.gravatar.com/avatar/524502968f1e213eb0261fad700ad291.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png)
this is what i currently have
generate "provider" {
path = "provider.tf"
if_exists = "overwrite_terragrunt"
contents = <<EOF
provider "google" {
credentials = "account.json"
region = "europe-west2"
project = ${gcp_project}
}
EOF
}
remote_state {
backend = "gcs"
config = {
project = "${gcp_project}"
location = "eu"
bucket = "bucket_name"
prefix = "${path_relative_to_include()}/terraform.tfstate"
credentials = "account.json"
gcs_bucket_labels = {
owner = "terragrunt_test"
name = "terraform_state_storage"
}
}
generate = {
path = "backend.tf"
if_exists = "overwrite_terragrunt"
}
}
![jason einon avatar](https://secure.gravatar.com/avatar/524502968f1e213eb0261fad700ad291.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png)
error is allong these lines
terragrunt-gcp-infra/terragrunt.hcl:33,19-30: Unknown variable; There is no variable named "gcp_project"., and 2 other diagnostic(s)
![loren avatar](https://secure.gravatar.com/avatar/d1e25dcfbc68a0857a04dd78c9afe952.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0003-72.png)
how is it that you are wanting to pass the value for gcp_project
?
![loren avatar](https://secure.gravatar.com/avatar/d1e25dcfbc68a0857a04dd78c9afe952.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0003-72.png)
at this stage in processing, you can read it from a yaml/json file, or pass it through an env
![jason einon avatar](https://secure.gravatar.com/avatar/524502968f1e213eb0261fad700ad291.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png)
thanks for prompt response.. i was looking to pass it in with a local var file within the module
![loren avatar](https://secure.gravatar.com/avatar/d1e25dcfbc68a0857a04dd78c9afe952.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0003-72.png)
as in, a terraform variable?
![jason einon avatar](https://secure.gravatar.com/avatar/524502968f1e213eb0261fad700ad291.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png)
for example this would be within the terragrunt.hcl for the module
locals {
# Automatically load environment-level variables
environment_vars = read_terragrunt_config(find_in_parent_folders("env.hcl"))
# Extract out common variables for reuse
env = local.environment_vars.locals.environment
project_gcp = local.environment_vars.locals.project_gcp
}
![jason einon avatar](https://secure.gravatar.com/avatar/524502968f1e213eb0261fad700ad291.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png)
this would be the env.hcl file referenced
![loren avatar](https://secure.gravatar.com/avatar/d1e25dcfbc68a0857a04dd78c9afe952.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0003-72.png)
ahh, then you have it already. for locals, terragrunt uses the same syntax as terraform, so instead of:
project = ${gcp_project}
use:
project = ${local.gcp_project}
![loren avatar](https://secure.gravatar.com/avatar/d1e25dcfbc68a0857a04dd78c9afe952.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0003-72.png)
or actually, because this is hcl2 and we do not need the interpolation syntax for this use case:
project = local.gcp_project
![jason einon avatar](https://secure.gravatar.com/avatar/524502968f1e213eb0261fad700ad291.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png)
awesome, thanks @loren i will give it a go!
![jason einon avatar](https://secure.gravatar.com/avatar/524502968f1e213eb0261fad700ad291.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0025-72.png)