我有一个terraform项目,该项目使用etcd发现url机制设置了一个多节点etcd集群,设置如下:
main.tf(假设动态生成etcd发现url,并将生成的url作为输入变量传递给下面的模块)
etcd模块
cloud init sh脚本(接收发现url变量并使用此url启动etcd群集节点)
问题是:我想在每次运行“terraform apply”(基于输入变量,比如numEtcdNodes)后动态生成新的etcd发现url,并将生成的url作为变量传递给etcd模块中的clo
我想在地形图中使用地图列表。
我有3个环境,每个环境有多个子网
segmented_subnets = {
rest = {
dev = [
"subnet-", #a
"subnet-", #b
]
qa = [
"subnet-"
"subnet-"
]
}
dashboard = {
dev = [
"subnet-",
"subnet-",
]
qa
我想创建一个S3存储桶列表,并将对它们的访问限制为一个用户。该用户应该只有访问该bucket的权限,没有在AWS中执行其他操作的权限
我这样创建了我的列表(在本例中,bucket名称不是真实的):
然后我创建一个用户
// Create a user
resource "aws_iam_user" "aws_aim_users" {
count = "${length(var.s3_bucket_name)}"
name = "${var.s3_buck
我已经在terraform中配置了当前的基础设施。因为我使用的是Auth0,所以我也想通过Terraform编写脚本。Hashicorp没有为Auth0提供自己的提供程序,但确实存在指向的社区提供程序条目。我看到您可以创建API、作用域等。但是,我看不到激活或配置Auth0扩展的方法。这不是插件的一部分吗?如果没有,是否有其他办法?谢谢大家!您可以考虑在引用的GITHUB回购协议上打开一个问题。他们将能够提供更具体的答案。嘿!我是康拉德,是Auth0的社区工程师。是的,您提到的回购协议是由我们的
已更新
我正在尝试使用Terraform在Azure中提供多个SQL数据库
My child模块具有以下代码,用于提供SQL数据库:
提供者。tf
// default provider
provider "azurerm" {
alias = "main"
features {}
}
// The provider that can access the storage account to store diagnostics
provider
有没有办法从命令行提供列表值?对于地图有变量合并,但对于列表似乎不起作用。我希望有点像,但没有运气。。。谢谢
terraform apply -var "listvar=abc1" -var "listvar=abc2"
或者可能
terraform apply -var "listvar=[abc1, abc2]"
我能够按如下方式使其工作:
variable "listvar" {
description = "some varaible to list"
ty
运行terraforminit时,使用Terraform的0.11.7版,我得到:
[ERR] Checkpoint error: Get https://checkpoint-api.hashicorp.com/v1/check/terraform?arch=amd64&os=linux&signature=9cb67b37-446e-c9cc-b9b8-953644a81a2d&version=0.11.7: proxyconnect tcp: dial tcp: l
我试图找到如何在HCL中做一件非常简单的事情的方向。我有一个像这样的街区
resource“aws_elastic_beanstalk_环境”“qa”{
名称“qa1”
#在此处插入设置
}
我想在注释所在的位置插入一组设置。但是配置不是一个数组,它应该是这样的
所需的块“设置”{
设置{}
设置{}
}
如何注入所需的块?不需要创建多个块,您可以设置一个数组,这样就可以了。像
resource“aws_elastic_beanstalk_环境”“qa”{
name=“qa1”
设置=[“$
我试着去做
地形应用
但在误差以下
发生1个错误:
digitalocean_droplet.testvm[0]:未找到变量的资源“digitalocean_droplet.testvm”
“digitalocean\u droplet.testvm.ipv4\u地址”
Terraform在遇到错误时不会自动回滚。
相反,您的地形状态文件已使用任何
已成功完成的资源。请解决上面的错误
并再次应用以增量方式更改您的基础结构
如何将创建的液滴的公共ip传递给provisioner local e
我创建了一个AWS Lambda层,并创建了将其部署到AWS的地形代码。我希望每次创建层的新版本时,它都作为新版本部署,而不删除旧版本。然而现在它却做了相反的事情,只是添加了新版本,但删除了旧版本。如何改变它
这是我的地形代码
provider "aws" {
region = "eu-central-1"
}
resource "aws_s3_bucket_object" "object_lambda_common_layer" {
bucket = "tm-bamboo-deplo
我有一个模块,可以创建多个输出。每个输出的值都是一个帐号
我想使用资源上的count参数来使用上面提到的模块中的值进行迭代。但是,我了解到,不能对变量默认值或分层插值进行插值
在地形中处理这个问题的正确方法是什么
variable "service_node_accounts" {
description = "List of Account IDs"
type = "list"
default = ["${module.accounts.qa}", "${mo
标签: Terraform
terraform-provider-awsinfrastructure-as-code
在使用terraform时,我正在努力从几个新的ec2实例中获取密码。我读了好几篇文章,以为我已经读到了,但没有任何进展
这是我的配置:
resource "aws_instance" "example" {
ami = "ami-06f9d25508c9681c3"
count = "2"
instance_type = "t2.small"
key_name = "mykey"
vpc_security_group_ids =["sg-98d190fc",
标签: Terraform
amazon-rdsterraform-provider-awsamazon-aurora
更新:问题#2实际上不是地形问题..问题是AWS的问题..我修正了..代码工作正常..现在只剩下问题#1
AZs发行时
我在us-east-1中有一个RDS极光群集,其中有一个实例,我想在us-west-2中创建一个跨区域读取副本RDS极光群集,其中有一个实例
在尝试使用terrform从RDS aurora群集创建跨区域读取副本时,我遇到了两个问题
这是我的main.tf文件
provider "aws" {
region = "${var.aws_regio
和其他几个发布到StackOverflow的用户一样,我遇到了文件供应器的问题,Terraform文档说我们不应该依赖它们
解决文件供应器(特别是本地配置文件和脚本)的最佳方法是什么?一种非常有效且不需要直接连接到实例的解决方案是使用userdata作为钩子,从base64版本的文件“安装”文件
我们实际上可以将这些文件作为base64字符串嵌入到userdata初始化脚本中。这适用于AWS中的Windows和Linux实例,也与启动时运行userdata脚本兼容
解决方案说明:
在terraf
鉴于以下情况:
locals {
accounts = ...
}
如果local.accounts变量中的每个条目都有两个键(account name和ou id),这两个键对应于帐户的名称和帐户应属于的组织id的id,那么我们创建如下组织帐户:
resource "aws_organizations_account" "dynamically-created-accounts" {
for_each = local.accounts
name = each.va
我试图创建一个terraform配置文件来创建一个ec2实例。我正在使用variables.tf文件来放置所有变量。它适用于大多数情况,但有两种情况我无法实现。非常感谢任何指点
1.使用变量作为aws实例名称。使用var.service\u name或“${service\u name}”不起作用
resource "aws_instance" var.service_name {
ami = "ami-010fae13a16763bb4"
我正在构建terraform模块,并使用许多地方现有的资源组和存储帐户。是否有任何方法可以在仅导入资源组时导入存储帐户详细信息。否则,我必须在所有模块中重复上述代码
or anyway like ```data "azurerm_resource_group" "name"{Access storage account}"```
data "azurerm_resource_group" "name" {
name = "rgroup"
}
data "azurerm_s
我正在遵循极好的地形指南。我目前正在第三篇文章中探索这个州。特别是在演示terraform工作区的位置。
因此,我有以下main.tf:
provider "aws" {
region = "us-east-2"
}
resource "aws_s3_bucket" "terraform_state" {
bucket = "mark-kharitonov-terraform-up-and-running-state"
# Enable versioning so we can
我在aws提供商v2.34.0中使用Terraform v12.19。
想象一下,我生成了一个具有计数值的资源:
resource "aws_iam_role" "role" {
count = length(var.somevariable)
name = var.somevariable[count.index]
}
稍后,我想以这种方式引用一个特定的资源实例,例如。g、 :
resource "aws_iam_role_policy_attachment" "polatt" {
我想合并两个地形图,只有当条件为真时
可以使用该函数进行合并
条件是映射中是否存在密钥。这可以通过函数进行检查
背景
如果你不在乎我为什么要做条件合并,你可以跳过这篇文章
关于我为什么要进行这些合并的一些背景知识,因为这可能不是在terraform中实现该结果的最佳方式
我将同一个项目地形化到多个工作区。工作区是不同的AWS帐户和区域。该列表在中心地形文件中定义。这些信息被排除在每个项目之外,因为:
许多项目被地形化到许多工作区
如果我以后想将该项目地形化到一个新的工作区,而在编写项目地形
我试图在私有子网中创建3个ec2实例。从git repo下面使用ec2-module.tf
下面是我在tf文件中启用的行
ec2子网ID=[“${module.vpc.private子网ID}”]
错误如下所示
错误:模块参数的值无效
在模块“ec2-app-v1”中的ec2-module.tf第17行:
17:ec2子网ID=[“${module.vpc.private subnet ids}”]
给定值不适用于子模块变量“ec2子网ID”
在modules/ec2/ec2变量处定义。tf:
标签: Terraform
terraform-provider-awsterraform0.12+
在terraform版本从0.11更新到0.12.26后,我看到地图中的查找和值列表出现错误
variable "foo" {
type = map
}
foo = {
x.y = "bar"
}
我有一个映射“foo”作为变量类型(map),然后在映射中有一个键值对x.y=“bar”。在查找中,我试图将x.y的值读取为
lookup(var.foo, x.y)
有了这个,我就错了
Error: Ambiguous attribute ke
标签: Terraform
hashicorp-vaultterraform-provider-gcp
我们决定使用Vault来管理GCP凭据,而不是在本地的某个地方使用GCP凭据
下面的代码应该可以实现这个魔术。但是,在运行terraform plan时,我总是收到一个错误:
Error: google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.
我们使用的代码如
升级后,当运行地形平面图时,我收到如下消息:
Error: Invalid resource instance data in state
on iam_server_backup.tf line 4:
4: resource "aws_iam_access_key" "backup" {
Instance aws_iam_access_key.backup data could not be decoded from
the state:
我尝试用GPU创建google_容器_节点_池。
我尝试了nvidia-tesla-p4和a2-highgpu-1g机器类型,每种机器都返回不同的错误:
项目/我的项目id/区域/us-central1-a/machineTypes/nvidia-tesla-p4
或
错误:创建节点池时出错:googleapi:错误403:不足
满足请求的区域配额:资源
“可抢占的NVIDIA V100_GPU”:请求需要“3.0”且较短
'2.0'. 项目的配额为“1.0”,可用的配额为“1.0”。查看和
在
我不确定这里的Terraform port forwarding术语。如果我在专用网络的5000端口上有一个应用程序,我想在8000端口上公开该应用程序-我应该设置哪些变量
是否会从专用网络的角度
from_port: 5000
to_port: 8000
还是从公共网络的角度
from_port: 8000
to_port: 5000
如果我的内部应用程序需要用数据响应,我还需要设置出口值吗
示例来自:
将安全组(SG)视为实例周围的一个封闭的气泡。它与实例中发生的事情无关。它在实例之外
我正在尝试使用TF在Azure AD中注册一个应用程序,我想使用链接-->中提到的arg定义一些重定向URI:
但我必须放置3个URI,URI的格式如下:
https://(project code)-yellow-(resourcegroup).azurewebsites.net/oauth2-redirect.html
https://(project code)-blue-(resourcegroup).azurewebsites.net/oauth2-redirect.html
http
我正在寻找一个关于如何使用Terraform和aws\u apigatewayv2\u integration资源从API网关开始执行step函数的示例。我使用的是HTTP API(我在Stackoverflow上只找到了一个旧的REST API示例)
目前我有:
resource "aws_apigatewayv2_integration" "workflow_proxy_integration" {
api_id
我正在尝试运行以下代码:
locals {
terraform_modules_git = "git::ssh://....@vs-ssh.visualstudio.com/v3/...../terraform-modules"
terraform_modules_module = "resource_group?ref=v15.0.0"
}
module "MyModuleCall" {
source = &
我正在尝试调试我的Terraform脚本为什么不工作。由于未知原因,Terraform一直在破坏我的MySQL数据库,然后重新创建它
以下是执行计划的输出:
\azurerm\u mysql\u server.test01将被销毁
-资源“azurerm\u mysql\u服务器”“test01”{
-管理员\u login=“me”->null
-自动增长启用=真->空
-备份保留天数=7->null
-create_mode=“Default”->null
-fqdn=“db-test01.
如果资源使用count参数指定terraform中的多个资源,则有一种简单的语法可用于为资源实例提供专用字段的列表/数组
比如说
aws_subnet.foo.*.id
由于有相当多的版本,可以用复杂的结构声明变量,例如映射列表
variable "data" {
type = "list"
default = [
{
id = "1"
...
},
{
id = "10"
...
}
]
}
我正在
我正在尝试将cloud init config的多个部分与Terraform的template_cloudinit_config特性合并到一个AWS实例中
设想4个模板(此处简化):
如果我用云配置头对它们进行MIME编码
--MIMEBOUNDARY
Content-Transfer-Encoding: 7bit
Content-Type: text/cloud-config
Mime-Version: 1.0
要使用的正确合并类型是什么 您列出的模板是云配置,而不是云初始化
使用数据源te
当使用terraform0.11.3时,运行terraform init时,我们得到以下错误:
正在初始化提供程序插件。。。
-正在检查上的可用提供程序插件
安装提供程序“模板”时出错:获取
:读取tcp
172.25.77.25:53742->151.101.13.183:443:读取:对等方重置连接
Terraform自动分析配置和状态
下载所用提供商的插件。然而,当试图
下载此插件时发生意外错误
如果由于某种原因,地形无法到达
插件库。如果不允许访问,则可能无法访问存储库
被防火墙阻止
如
我想首先创建一个数字海洋液滴(服务器),然后为该服务器内的各种服务创建多个docker容器
我觉得这应该很容易,但我找不到任何其他人这样做的例子。任何帮助都将不胜感激。您无法在Terraform中真正嵌套这样的资源。你有两种不同的方法来解决这个问题,我会使用参数,在你的液滴上运行一个脚本,这个脚本会发出docker命令来下拉你的容器图像并启动你的容器。这是一篇带有示例的博客文章
希望这有帮助 我担心这可能就是答案。谢谢你,杰米。
我构建了一个Terraform模块,它将模块的两个实例部署到一个单独的区域。在本模块中有一个钥匙库。我只希望钥匙保险库出现在两个区域中的一个区域
这是我的模块:
resource "azurerm_resource_group" "test" {
name = "test"
location = "${var.location}"
}
resource "azurerm_key_vault" "keyvault" {
name = "keyvault"
}
这是我的主要任
试图使用AWS cli将公共访问块放入s3存储桶中,但遇到问题,无法解决
这是我的密码
resource "aws_s3_bucket" "test" {
bucket = "blah-blah"
versioning {
enabled = false
}
server_side_encryption_configuration {
rule {
apply_server_side_encryption_by_default {
我正在尝试使用terraform模块,但在密钥创建方面遇到了问题。我想为模块的每次运行生成一个新的aws_密钥对。我收到
aws_key_pair.default:错误导入密钥对:InvalidKeyPair。重复:密钥对“keyname”已存在
我想为模块的每次运行生成一个新的密钥(使用不同的名称),但我不知道如何实现这一点
我有一个变量
variable "key_pair_name" {
description = "EC2 Key pair name"
default = ""
我在使用terraform和下面的代码创建堆栈时遇到此错误
错误:加载/root/terraform堆栈创建/main.tf:position 2:10时出错:资源后面必须紧跟两个字符串,一个类型和一个名称
resource "aws_opsworks_stack" "stack" {
name = "${var.name}"
region = "${var.region}"
service_role_arn = "${var.service_role_arn}"
default
给定帐户名,是否可以从中提取帐户id
resource "aws_organizations_organization" "main" {
}
比如:
output "account_id" {
value = "aws_organizations_organization.main.accounts[name == 'account1']"
}
account\u id=012345678901
accounts = [
{
"arn" = "arn:aws:organiz
大家好,这里正在努力寻找解决方案,所以真的希望社区已经实现或能够提供一些关于如何做到这一点的建议
总结:
Terraform正在禁用构建时的dataprep。没有关于使用它或通过gcloud启用dataprep的文档
我所做的:
通过用户界面打开
我需要的是:
理想情况下,通过地形启用和维护。如果失败了,任何可以阻止Terraform禁用Dataprep的东西
对任何能帮助我的人来说,你都是英雄不幸的是,Trifacta不支持Cloud Dataprep的命令行界面。无法访问CLI或API
我试图使用terraform apply重新应用我的更改,但当我再次这样做时,它会给我错误,因为资源已经存在并停止部署
例如:
Error: AlreadyExistsException: An alias with the name arn:aws:kms:us-east-1:490449857273:alias/continuedep-cmk-us-east-1 already exists
status code: 400, request id: 4447fd20-d33
如果它是由terraform从头开始创建的,那么它在状态文件中的外观就是这样的:
{
"module": "module.rds",
"mode": "managed",
"type": "aws_cloudwatch_log_subscription_filter",
"name": "rds_logs_delivery",
"each": "map",
"provider": "provider.aws",
"instances": [
{
"
对于以下代码,我用for_替换count。在动态“日志”下调用azurerm_monitor_diagnostic_类别的数据源时,需要参考资源索引的帮助
在查找您的问题时正在查找相同的信息。
以下内容适合我:
dynamic "log" {
for_each = [for lg in data.azurerm_monitor_diagnostic_categories.webui.logs : {
lg_name = lg
}
]
conte
我有一个Terraform模块,可以生成地图输出列表:
object_ids = [
{
"object_id" = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
"upn" = "john@domain.com"
"user" = "john"
},
{
"object_id" = &qu
我正在使用azurerm_资源_组_模板_部署的内联部署,并传递一个使用另一个地形资源名称的参数
代码:
资源“azurerm_应用程序_服务”“webapi”{
name=“${lower(var.deploymentEnvironment)}-webapi”
location=azurerm\u resource\u group.frontendResourceGroup.location
resource\u group\u name=azurerm\u resource\u group.
是否有一个简单的测试来ping服务器?
我尝试过使用HttpGetWithRetry,但似乎失败了。
我的服务器实例是一个运行apache2的Ubuntu服务器,我在其中运行了以下命令:
#!/bin/bash
sudo apt update -y
sudo apt install apache2 -y
sudo systemctl start apache2
sudo bash -c 'echo my first web server > /var/www/html/index.html
我想看看是否有人遇到了在Terraform中尝试做以下事情的需要
data.aws_iam_policy_document.${var}.json
基本上是创建一组带有数据的IAM策略文档。在这之后,我希望使用for_each循环一个模块调用,并使用键引用数据对象,并将所述对象的json属性作为var发送给模块
Psuedo代码:
module "example" {
source = "../example"
for_each = var.de
我试图理解“lookup”函数在terraform代码中的确切作用?它能找到地图或列表吗?只是对如何正确使用此查找感到困惑。对此有以下说明:
lookup从映射中检索给定键的单个元素的值。如果给定的键不存在,则返回给定的默认值
按键从映射中查找值的正常方法是使用,如example[“foo”],但如果映射example中没有键为foo的元素,则该操作将返回错误
因此,lookup与索引语法类似,除了在键不存在的情况下选择要使用的回退值而不是错误之外查找(例如,“foo”,“default”)与示
我想要组合2个局部变量,因为我需要将信息传递给负载平衡器目标组附件资源
locals {
test-svc = {for idx,svc in local.merged_lbport_svc : "${svc.service}-${svc.port}" => svc ...}
}
locals {
service_instance_map = merge([for env, value in data.aws_instances.ecom-instan
我想从terraform state show中提取给出的数据。根据文档,我们应该使用terraformshow-json
terraform state show的输出用于人类消费,
不是程序性消费。提取状态数据以用于其他应用程序
软件,使用terraform show-json并使用
文件化结构
不确定如何将terrafrom state show与terrafrom show
$ terraform state show 'packet_device.worker'
# packet_de
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 62 页