标签: terragrunt

Terraform 会损坏您在 macOS Intel 上的计算机

我在 macOS Ventura 13.3.1 上遇到 terraform 问题。当我尝试初始化 terragrunt 时:

地形初始化

我有信息表明

Terraform 会损坏您的计算机

我的同事正在使用 M1 和 terraform 版本 1.0.11,他没有问题。我尝试了最新版本和1.0.11,但仍然有这个错误。我通过 tfenv 安装了 terraform。

在此输入图像描述

macos terraform terragrunt

51
推荐指数
4
解决办法
2万
查看次数

我可以在 Terraform Cloud 上使用 Terragrunt 吗

我有一个包含 Terraform Cloud 的供应管道,我们的领导层要求我们使用 Terragrunt 来提高 Terraform 代码质量。

Terragrunt 是一个很好的工具,但我没有看到任何证据表明有人在 Terraform Cloud 上成功使用过它。

任何人都可以解决这个问题吗?请只回答如果你

  1. 自己做过这件事,或者
  2. 可以提供文件证明这是可行的,或
  3. 提供文件证明这不是一个好主意或
  4. Terraform Cloud 无法实现。

terraform terragrunt terraform-cloud

13
推荐指数
1
解决办法
2095
查看次数

Terraform提供程序/模块中的变量共享

有没有一种方法可以为项目中定义的所有模块抽象提供程序。

例如,我有这个项目

??? modules
?   ??? RDS
?   ??? VPC
??? stacks
    ??? production
    ?   ??? main.tf
    ??? staging
        ??? main.tf
Run Code Online (Sandbox Code Playgroud)

而且工作正常...问题在于模块的定义

??? RDS
?   ??? README.md
?   ??? main.tf
?   ??? providers.tf
?   ??? variables.tf
??? VPC
    ??? README.md
    ??? main.tf
    ??? providers.tf
    ??? variables.tf
Run Code Online (Sandbox Code Playgroud)

这两个模块中的提供者完全相同

# providers.tf
provider "aws" {
  region = "${var.region}"
  version = "~> 1.26"
}
Run Code Online (Sandbox Code Playgroud)

并且每个模块中的变量都不同,但是它们都有region变量。

# variables.tf
variable "region" {
  default     = "eu-central-1"
  description = "AWS region."
}
# other module dependent …
Run Code Online (Sandbox Code Playgroud)

terraform terragrunt terraform-provider-aws

12
推荐指数
3
解决办法
7514
查看次数

由较新的提供程序版本管理的资源实例错误

您好,当我尝试在我的 azure ADF 代码中运行 terraform plan 时,弹出了此错误

请参阅附图了解更多详情

在此输入图像描述

terraform terragrunt

10
推荐指数
2
解决办法
1万
查看次数

使用 Terraform 的 Google Cloud 凭据

这是一个新手问题,但我刚刚开始使用 Terraform / Terragrunt 进行 GCP 配置,我发现获取 GCP 凭据的工作流程非常混乱。我来自只使用 AWS,在那里获取凭证并在 AWS CLI 中配置它们非常简单。

基本上,Google Cloud Provider 文档指出您应该provider像这样定义一个块:

provider "google" {
  credentials = "${file("account.json")}"
  project     = "my-project-id"
  region      = "us-central1"
  zone        = "us-central1-c"
}
Run Code Online (Sandbox Code Playgroud)

credentials字段显示我(显然)必须生成一个服务帐户,并在我的文件系统上的某处保留一个 JSON。

但是,如果我运行该命令gcloud auth application-default login,则会生成一个位于~/.config/gcloud/application_default_credentials.json;的令牌。或者我也可以使用gcloud auth login <my-username>. 从那里我可以使用gcloud命令从命令行访问 Google API(这也是 Terraform 在幕后所做的)。

那么为什么 Terraform 提供程序需要服务帐户的 JSON 文件呢?为什么不能只使用gcloudCLI 工具已经在使用的凭据?

顺便说一句,如果我将 Terraform 配置为指向该application_default_credentials.json文件,则会出现以下错误:

正在初始化模块...

正在初始化后端...

错误:无法获取现有工作区:查询 Cloud Storage 失败:获取 …

google-cloud-platform terraform terragrunt terraform-provider-gcp

9
推荐指数
1
解决办法
8424
查看次数

是否可以使用 terragrunt 调用多个 terraform 模块

我正在尝试从 terragrunt 调用多个模块。据我所知,目前 terragrunt 不支持多个源,我们一次只能调用一个模块。因此,我创建了一个 main.tf 文件来前端多个模块。

# main.tf 

module "foo" {
   source = "../modules/vpc"
}


module "bar" {
   source = "../modules/s3"
}
Run Code Online (Sandbox Code Playgroud)

在 terragrunt 内部调用 main.tf 作为源,认为将调用模块 foo 和模块 bar。

# terragrunt.hcl

terraform {
  source = "./main.tf

  }


inputs {
}
Run Code Online (Sandbox Code Playgroud)

使用 terragrunt 可以吗?我需要一次对多个 terraform 模块进行分组。

terraform terragrunt terraform-provider-aws

9
推荐指数
1
解决办法
2万
查看次数

Mongodb Atlas 的 Terraform 提供程序:我的数据库在哪里?

我已经通过 Mongodb terraform 提供程序成功创建了项目、用户和集群,但是我希望看到在我的新集群下已经创建的数据库,但找不到该数据库。我不确定它缺少什么或不正确,并且我在文档中找不到任何与我自己实现的内容不同的示例/信息。以下是我的 main.tf 文件中的相关信息:

# Create a db user
resource "mongodbatlas_database_user" "mongodb_user" {
  username = "${var.database_username}"
  password = "${random_string.master_password.result}"
  project_id = "${mongodbatlas_project.mongodb.id}"
  database_name  = "admin"

  roles {
    role_name = "readWrite"
    database_name = "admin"
  }
}
Run Code Online (Sandbox Code Playgroud)

团体

resource "mongodbatlas_project" "mongodb"{
  org_id = "${var.mongodb_atlas_org_id}"
  name = "${var.project_name}-${var.stage}"
 }
Run Code Online (Sandbox Code Playgroud)

# Create a cluster
resource "mongodbatlas_cluster" "mongodb-cluster" {
  project_id = "${mongodbatlas_project.mongodb.id}"
  name = "${var.cluster_name}-${var.stage}"
  num_shards = 1

  replication_factor = 3
  backup_enabled = true
  auto_scaling_disk_gb_enabled = true
  mongo_db_major_version = "4.0"

  //Provider Settings …
Run Code Online (Sandbox Code Playgroud)

terraform mongodb-atlas terragrunt terraform-provider-aws

7
推荐指数
1
解决办法
3175
查看次数

导入 Terragrunt 中的现有资源

我正在寻找一种方法来管理 Terragrunt 工作流程中的现有资源,而无需重新创建它们。Basic Terraform 能够在此处导入远程状态,但我在 Terragrunt 中看不到实现此操作的方法。我知道可以使用数据源,但我很确定这意味着它每次运行都会检查远程状态,而不是将其引入进行管理。

最后,我希望能够导入现有的网络主机项目及其网络和子网,然后使用它来创建服务项目。

terragrunt

7
推荐指数
1
解决办法
2万
查看次数

如何在 run-all apply 执行期间强制 Terragrunt 在出现第一个错误时失败

目前,当我运行 terragrunt run-all applyagags 文件夹时,即使出现错误,也会继续执行,这会导致其他模块出现错误,因此我最终会得到大量日志输出,并且必须在其中搜索第一个事件。

有什么方法可以强制 Terragrunt 快速失败吗?

terragrunt

7
推荐指数
0
解决办法
314
查看次数

Terragrunt 全局变量

所以我有一组大约 30 个输入,在所有项目之间共享。我想知道在所有 terragrunt.hcl 文件中共享它们的最佳方法,而不必将它们复制到一百万个不同的地方。我目前使用 yaml 文件进行一些覆盖。我想知道最佳实践是什么。

    locals {
      manager           = "devops"                             # default contact
      company_id        = "moos3"                                 # any string to identify the company for better resources naming. Keep max size of five chars.
      default_yaml_path = find_in_parent_folders("empty.yaml") # terragrunt function. read the file content for better explanation.
      enabled_api_services = [                                 # APIs enabled by default for all projects when created
        "compute.googleapis.com",
        "cloudkms.googleapis.com",
        "cloudresourcemanager.googleapis.com",
        "logging.googleapis.com",
        "monitoring.googleapis.com",
        "serviceusage.googleapis.com",
        "storage-api.googleapis.com",
      ]
      gcp_billing_account    = "*****************" # gcp billing account where projects will be …
Run Code Online (Sandbox Code Playgroud)

terragrunt

6
推荐指数
1
解决办法
5350
查看次数