我正在考虑在Terraform 中使用新的条件基本上打开或关闭配置块取决于evnironment.
这是我想要成为条件的块,例如,我有一个变量可以打开生产.
access_logs {
bucket = "my-bucket"
prefix = "${var.environment_name}-alb"
}
Run Code Online (Sandbox Code Playgroud)
我认为我有条件检查环境的逻辑,但我不知道如何将上述配置粘贴到逻辑中.
"${var.environment_name == "production" ? 1 : 0 }"
Run Code Online (Sandbox Code Playgroud)
是否可以access_logs通过environment_name变量打开和关闭块?如果无法做到这一点,是否有解决方法?
所以 azurerm 几个小时前更新到 2.0....
为了安全起见,我的主要代码是版本锁定的,但我正在做一些测试以查看与 1.44 的公开测试版相比发生了什么变化,现在我在除 terraform init 之外的任何 TF 命令上都收到此错误。
有没有其他人遇到过这个问题?
使用 Terraform 配置自动缩放组时,我感到很困惑。我应该为 EC2 属性使用启动配置还是启动模板,例如哪个 AMI、实例类型……?
我不知道它们之间有什么区别,我们应该使用哪个以及它们为什么存在?
我有一个使用模块的 Terraform 脚本。我想创建多个资源,所以我使用了 for_each 方法。
下面是我的变量配置:
variable bridge_domains {
description = "Bridge Domain"
type = map
default = {
bd1 = {
name = "BD1",
},
bd2 = {
name = "BD2"
}
}
}
Run Code Online (Sandbox Code Playgroud)
在根main.tf文件中,我使用for_each以下命令遍历该变量:
module "schema_template_bd" {
source = "./modules/schema_template_bd"
for_each = var.bridge_domains
schema = module.tenant.mso_schema.id
template = var.template
bd = each.value.name
}
Run Code Online (Sandbox Code Playgroud)
然后在modules/schema_template_bd文件中我有以下内容:
resource "mso_schema_template_bd" "bd" {
schema_id = var.schema
template_name = var.template
name = var.bd
}
Run Code Online (Sandbox Code Playgroud)
该模块有一个输出,我在其中定义了以下内容:
output "mso_bd" { …Run Code Online (Sandbox Code Playgroud) 我一直在尝试有条件地使用根模块中的模块,以便在某些环境下不会创建该模块。许多人声称,通过count使用条件将模块中的 设为 0 或 1 即可达到目的。
module "conditionally_used_module" {
source = "./modules/my_module"
count = (var.create == true) ? 1 : 0
}
Run Code Online (Sandbox Code Playgroud)
然而,这改变了 的类型conditionally_used_module:我们将拥有一个包含单个对象的列表(或元组),而不是对象(或映射)。是否有另一种方法可以实现此目的,而不意味着更改模块的类型?
我正在使用 terraform 版本 0.11.13,今天下午我在terraform init步骤中收到以下错误这是否意味着我必须升级 terraform 版本,aws 提供程序是否弃用了此版本?
完整日志:
Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.
[1mInitializing provider plugins...
- Checking for available provider plugins on https://releases.hashicorp.com...
Error installing provider "aws": openpgp: signature made by unknown entity.
Terraform analyses the configuration and state and automatically downloads
plugins for the providers used. However, when attempting to download this
plugin an unexpected error occured.
This may be caused if for some …Run Code Online (Sandbox Code Playgroud) provider amazon-web-services terraform terraform-provider-aws terraform0.11
我有很多机器,所有这些机器在系统中的功能都有所不同.我想组织这些机器并自动添加到主机库存文件,以便我可以运行ansible并管理库存.那里有好的解决方案吗?
我认为ansible主机应该看起来像......
[webservers]
someip
someip
[integration]
someip
someip
Run Code Online (Sandbox Code Playgroud)
等等..
在提出问题后,我目前正在研究输出变量并使用它们从文件中渲染模板.
该Terraform数据源文档告诉我一个数据源是什么,但我不太明白.有人能给我一个数据源的用例吗?它与使用变量配置的东西有什么区别?
使用 Terraform,我声明一个 s3 存储桶和关联的策略文档,以及 iam_role 和 iam_role_policy。
s3 存储桶在 AWS 中创建得很好,但是该存储桶被列为“访问:对象可以是公共的”,并且希望对象是私有的。如何明确地将对象设为私有?
resource "aws_s3_bucket" "app" {
bucket = "${data.aws_caller_identity.current.account_id}-app"
server_side_encryption_configuration {
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}
}
data "aws_iam_policy_document" "app_s3_policy" {
statement {
effect = "Allow"
actions = [
"s3:PutObject"
]
resources = [
aws_s3_bucket.app.arn,
"${aws_s3_bucket.app.arn}/*"
]
}
}
Run Code Online (Sandbox Code Playgroud) 有关如何在 Apple M1 上设置 Terraform v0.14.0 的任何指示,因为 tfenv 不支持 Apple M1 上的 v0.14.0
tfenv install v0.14.0
Installing Terraform v0.14.0
Downloading release tarball from https://releases.hashicorp.com/terraform/0.14.0/terraform_0.14.0_darwin_arm64.zip
curl: (22) The requested URL returned error: 403
Tarball download failed
Run Code Online (Sandbox Code Playgroud) terraform ×10
amazon-s3 ×1
ansible ×1
apple-m1 ×1
autoscaling ×1
azure ×1
darwin ×1
hcl ×1
if-statement ×1
provider ×1