我正在创建访问策略作为Terraform中的内联策略:
是否可以使用一个列表类型的变量来代替它?
如果是,你能举个例子吗
对我来说,例外是:
Error: Error running plan: 1 error(s) occurred:
* aws_elasticsearch_domain.db: 1 error(s) occurred:
* aws_elasticsearch_domain.db: At column 1, line 1: output of an HIL express
我在尝试使用terraform时遇到了以下问题
我尝试通过企业代理使用terraform
所以我设置了HTTPS_PROXY env变量
但是企业代理作为一个中间人,为病毒解析网页。并配置了由我们企业自己的权威机构颁发的安全服务器证书
terraform似乎无法连接到https注册表,因为此CA根证书不受信任
有没有一种方法可以配置terraform在Windows下使用自定义CA根信任库
下面是我在初始化阶段尝试连接Terraform时遇到的错误
<!-- language: none
在以下代码块中,我尝试将服务器名称数组传递给attributes_json块:
resource "aws_instance" "consul-server" {
ami = var.consul-server
instance_type = "t2.nano"
key_name = var.aws_key_name
iam_instance_profile = "dna_inst_mgmt"
vpc_security_group_ids = [
我想编写一个terraform模块,它将一个参数作为输入,并根据输入生成如下标记:Team,Slack,Environment。此输入将用于调用RESTAPI并获取Team、Slack等的值
我正在考虑编写一个自定义terraform提供程序,它将调用RESTAPI。但是我不知道如何从terraform模块调用自定义提供程序。我找到了RESTAPI的提供程序。
您可以使用它或创建一个新的引用它
有关第三个插件的安装,请参阅
我在terraform 0.11.14上,我有一个aws_cloudformation_堆栈资源,如下所示:
resource "aws_cloudformation_stack" "ingress_sg" {
name = "bastion-${var.accountName}-ingressIntuitIPs"
lifecycle {
prevent_destroy = true
}
parameters {
VpcId = "${var.default_
我正在尝试将我的地形文件从V0.11更新到V0.12,我有一些问题
用字符串连接变量的最佳方法是什么
在V0.11中,我使用这个:${var.name}-STRING-${var.name2},在V0.12中,我可以使用这个:var.name“-STRING-”var.name2,或者我必须使用其他方法连接变量和字符串吗 要连接,请检查以下几个示例:
如果要将“@”添加到字符串:
value = "${var.username}@${aws_instance.my-instance.public
地形版本0.11.13
错误:刷新状态时出错:发生1个错误:
data.aws_subnet.private_subnet:data.aws_subnet.private_subnet:无法计算“count”的值
VPC代码生成了上述错误:
resources.tf
data "aws_subnet_ids" "private_subnet_ids" {
vpc_id = "${module.vpc.vpc_id}&
标签: Terraform
terraform-provider-gcpterraform0.12+
我已经在terraform中创建了自定义模块
main.tf
resource "xyz" "abc" {
name = var.settings[name]
type = var.settings[type]
}
variable.tf
variable "settings" {
type = map(any)
description = "Default variables"
default = {
cmd=“gunicorn--preload--timeout 600--workers 17-b0.0.0.0:5000 xxx.api.app:create()”
在.tf文件中不起作用。它抱怨花括号
我必须逃离他们吗?如何逃离
谢谢您的建议。您能提供TF使用的完整示例以及收到的错误消息吗?
假设我有一些地形变量:变量“cluster”{}和变量“kfkcount”{}
假设cluster=test和kfkcount=3
如何使用terraform将其转换为如下所示的列表
[“test1.c.com”、“test2.c.com”、“test3.c.com”]编辑
有一点可以帮助您,那就是使用循环,并使用count.index作为名称的值。
所以你可能会得到这样的结果:
resource ".." "..." {
count = "${var.kfkcount}"
somet
我正在尝试为OpenVPN访问服务器开发Terraform代码,但出现错误:
aws_instance.openvpn_srv: Error launching source instance: OptInRequired:
In order to use this AWS Marketplace product you need to accept terms and
subscribe.
Terraform是否支持这样使用ami?我们发现通过控制台一次性接受ULA是最容易的,它解决了a
根据Terraform文档,数据源可以通过使用不同的提供者实现来获取或计算值
参考-
具体的例子中,计算与提取的区别是什么?区别很小:
在较高级别上,在运行模板之前存在获取的数据,并且在运行时创建计算的数据
获取的数据将类似于引用中的示例。这里Terraform正在获取有关AMI的信息,然后可用于构建EC2实例:
data "aws_ami" "web" {
filter {
name = "state"
values = ["available"]
}
fil
我正在使用terraform部署到多个AWS帐户,每个帐户都有自己的一组环境。我正在使用terraform工作区和s3远程状态。当我在这些帐户之间切换时,其中一个帐户的terraform workspace列表现在为空。有没有办法从s3远程状态同步工作区的状态?
请告知。
谢谢
我曾尝试创建工作区,但当我运行terraform plan时,它确实创建了所有资源,即使它们已经处于远程状态。我使用以下方法修复了它:
我使用terraformworkspace命令手动创建了新的名称空间
我转到S3,在
在OSX上,我的环境如下所示
NJ033-10126375:旧示例10126375$terraform版本
地形v0.12.10
+provider.azurerm v1.28.0
+provider.random v2.2.1
编辑:当我运行terraform providers时,我得到以下信息
.
├── provider.azure
├── provider.azurerm ~>1.35
└── provider.random
我在terraform中得到以下错误
No avai
我试图在cloudwatch中循环一个事件模式,但出现了错误。不确定我是否用正确的方式做了这件事
resource "aws_cloudwatch_event_rule" "failed_event" {
name = "failed-event"
description = "failed event"
for value in range(length(var.values)):
{
event_pattern = <<PATTERN
{
"source": [
我正在尝试设置codebuild以接收来自terraform代码管道的工件。terraform文件中codebuild资源的相关部分如下所示:
source {
type = "CODEPIPELINE"
git_clone_depth = 1
}
运行terraform apply时,我收到一个错误,错误是:
错误:创建CodeBuild项目时出错:InvalidInputException:无效输入:使用CodePipeline时,sour
我正在使用Terraform在AWS中创建与DMS相关的基础设施(复制实例、端点、任务等)。在编辑S3端点的额外连接属性的过程中,我会这样创建它们:
extra_connection_attributes="addColumnName=true;bucketFolder=foldername;bucketName=bucketname;cdcPath=undefined;compressionType=GZIP;csvDelimiter=,;csvRowDelimiter=\n;encrypti
我一直在使用terraform文档来学习terraform,但是
在默认的5分钟后,我不断收到超时错误
aws_instance.example (remote-exec): Connecting to remote host via SSH...
aws_instance.example (remote-exec): Host: 63.32.57.5
aws_instance.example (remote-exec): User: ec2-user
aws_instance.exam
我用的是terraform enterprise
我创建了main.tf文件,并放置了下面用于创建sentinel策略的代码
data "tfe_workspace_ids" "all" {
names = ["*"]
organization = myorg
}
locals {
workspaces = "${data.tfe_workspace_ids.all.external_ids}" # map of names to IDs
}
resource "t
因此,我创建了一个google_bigquery模块来创建数据集并设置访问权限
该模块迭代映射列表的映射。它使用each.key创建数据集,然后遍历映射列表以创建动态访问
该模块的工作原理如下:
它既没有错误也没有警告
它部署资源
它适当地填充远程状态文件
问题是,每次我运行terraform时,它都希望一次又一次地重新应用相同的更改
显然有些事情不对,但不确定是什么
这是密码
main.tf
locals {
env = basename(path.cwd)
p
我已经看到了很多关于将一个模块的输出传递到另一个模块的帖子。由于某种原因,我不能让它工作
我可以得到模块的输出,没有任何问题
但是,当我调用资源中的模块或调用其他模块时,它会询问我安全组ID
以下是我的文件结构:
不确定这是否正确,但在dev/service/dev_instance/main.tf中:
在dev/service/dev_instance/output.tf中:
我的ec2模块build_ec2.tf文件包含以下内容:
我假设您在一个变量.tf文件中定义了var“vpc\u se
我正在将配置从azurerm 1.44迁移到2.3.0,需要使用新的配置项azurerm\网络\接口\安全\组\关联
当我完成我的计划时,一切似乎都很好:
Terraform将执行以下操作:
# module.web-msg.azurerm_network_interface_security_group_association.main[0] will be created
+ resource "azurerm_network_interface_security_group_ass
标签: Terraform
terraform-provider-azureterraform-remote-state
对于Terraform远程后端,是否有一种方法可以使用变量来指定组织/工作区名称,而不是硬编码的值
似乎也没有提到任何相关的事情 本文将对此进行详细介绍。需要注意的要点是:
只能指定一个后端,并且配置不能包含插值。Terraform将验证这一点
如果您想使其易于配置,那么可以将其用于静态部分(例如,S3之类的后端类型),然后在运行时通过环境变量或命令行标志以交互方式提供配置
我个人将Terraform操作包装在一个小的shell脚本中,该脚本运行Terraform init,命令行标志使用适当
以下两种地形样式有什么不同,它们是否相同
vpc_id = aws_vpc.default.id
Vs
vpc_id = "${aws_vpc.default.id}"
第一个是HCL2表达式,第二个是插值
在terraform v.0.12.x之前使用插值,这就是为什么在互联网上仍然可以找到这种符号
如果您有v0.12.x,请使用“${aws_vpc.default.ip}”符号并运行命令terraform validate,您将收到警告:
警告:不推荐使用仅插值表达式
我试图在terraform中运行这个,一切都很好,但是在创建了实例(ubuntu)之后,它无法连接,它只是超时了。我已多次生成私钥,但仍会出现错误:
.tf文件
#####################################
#VARIABLES
#####################################
variable "aws_access_key" {}
variable "aws_secret_key" {}
va
我正试图运行一个“Terragrunt计划-out=$plan”,但似乎我不能?这里我的目标是输出一个计划,然后显示该计划并发布到GitLab合并请求
我该如何着手实现这一点
以下是我到目前为止的情况:
- terragrunt plan -out $PLAN
- "terragrunt show --json $PLAN | convert_report > $JSON_PLAN_FILE"
artifacts:
paths:
我正在尝试将项目列表转换为地图。
该键将与项中的键匹配,如果该键已存在,则该值应创建列表的附录列表
也许一个例子更容易理解
variable "list" {
type = list(map(string))
default = [
{ a : "a", k : "k1" },
{ a : "b", k : "k1" },
{ a : "c",
标签: Terraform
terraform-provider-azureazure-policy
我有一个自定义策略计划,我想使用terraform分配,其中一个策略确实有参数。
我知道,对于单个策略分配,我们可以使用类似的东西,并将变量作为参数传递
parameters = jsonencode({
"operationName": {
"value": var.allowed_values,
}
})
然而,我尝试了主动,这似乎不像它一直抱怨参数丢失
事实上,我试图将参数硬编码到azurerm_policy_赋值
我使用Terraform在多个单独的环境中创建多个主机,并使用该环境中的环境号和主机号信息设置主机名:
variable "envs" {
type = number
default = 1
}
variable "hosts" {
type = number
default = 1
}
variable "pr" {
# precision for hostname pattern (no relevance, j
我试图从github中获取terraform模块,如下所示:
module "example" {
source = "https://github.com/cloudposse/terraform-example-module.git?ref=master"
example = "Hello world!"
}
当我运行terraforminit时,我得到以下错误:
Error: Failed to download mod
我使用terraform已经有一段时间了,但我对代码毫无经验。我一直在使用下面的块为我的主机生成描述
resource "vra_deployment" "test_instance" {
count = var.instance_count
catalog_item_name = var.catalog_item_name
description = "${var.hostname_prefix}${form
我正在用两个模块构建一个VPC和AWS EC2。一个用于VPC,一个用于EC2。我正在努力弄清楚如何为ec2模块中使用的子网使用输出
我在VPC模块中创建了子网
resource "aws_subnet" "tnt_public_subnets_cidr" {
vpc_id = aws_vpc.tnt_vpc.id
count = length(var.availabilit
想知道是否有人跑去解决它。所以,我需要能够生成当前可通过API列出的出口CIDR块列表。示例输出如下所示:
[
{
"description": "blahnet-public-acl",
"metadata": {
"broadcast": "192.168.1.191",
"cidr": "192.16
我在一个区域中创建了vpc和3个子网。我有3个名为jsc、valid、test的服务,我必须为每个服务创建3个实例,我必须从每个区域cidr块传递子网id
variable "region" {
type = string
default = "ap-south-1"
}
variable "ecom-cidr" {
type = string
default = "10.0.0.0/16"
基于评估并用于影响资源计数的变量创建条件资源时出现问题。问题是,有条件地创建的资源随后会在代码中的其他位置引用。例如,此安全组:
resource "aws_security_group" "mygroup" {
count = var.deploy_mgroup ? 1 : 0
name = "mygroup-sg"
vpc_id = aws_vpc.main.id
ingress
自从我开始使用远程状态以来,最近有几次我在后端配置中指定了错误的值,从而错误地配置了状态。一旦我用这个不正确的信息运行terraform init,它就会抛出一个错误…即使在我纠正错误之后,我也无法正确配置后端。我“认为”当我使用错误信息运行init时,它会被写入.terraform文件夹中的terraform.state。然后,当我更正错误并重新运行terraform init时,它将我的更正视为一个更改,尝试在更改为新配置之前验证旧配置(这是错误的),但由于无法验证旧配置而失败。我现在知道的
遇到错误“属性的值不合适”触发器:需要字符串映射
正在尝试使用本地exec provisioner,在本例中为“monitor”,它应在创建特定资源之前触发
尝试在bigip\u ltm\u监视器资源中设置dependens\u=[null\u resource.test\u run]而不是在null\u资源中设置触发器{…}
这允许Terraform在监视器之前创建provisioner资源
有关详细信息,请参见。尝试在bigip\u ltm\u监视器资源中设置依赖=[null\u资源。测试运
如何仅迭代terraform脚本的小部件部分,并在单个仪表板中获取所有小部件
locals {
instances = csvdecode(file("${path.module}/sample.csv"))
}
//如果我们使用计数,它将循环此部分
resource "aws_cloudwatch_dashboard" "main" {
dashboard_name = "my-dashboard"
dashboard_body = <<EOF
{
"w
我不熟悉使用vs代码和Mikael Olenfalk的“terraform”扩展的terraform
我学习了使用字符串插值,在这里我可以ctrl+space(intellisense)并使用资源引用。但是,我不确定这是否总是必需的(引用我的*.tf文件中的资源)?如果我不需要插值而只引用一个资源,那么使用“字符串插值方式”真的很麻烦
假设我有一个名为static site的azurerm_存储_帐户资源。我可以做以下操作,vs代码表示一切正常
name=“${azurerm\u storage
我升级到Terraform v0.12.16,现在我收到了很多类似这样的消息:
Warning: Interpolation-only expressions are deprecated
on ../modules/test-notifier/test_notifier.tf line 27, in resource "aws_sns_topic_policy" "default":
27: arn = "${aws_sns_topic.default.arn}"
Ter
我正在尝试使用Terraform来自动化环境的部署,但设置中有一些棘手的问题:
我需要提供DNS CNAME记录,但我的问题是,基于环境,我需要在DNS或Azure DNS中提供该记录(并且它们是互斥的)
而且,出于同样的原因,例如,当我想在Azure中配置时,初始化TerraformDyn提供程序对我来说没有意义
我认为应该包括两个提供者:
provider azurerm {
version = "=1.44.0"
client_id = var.dns_provide
标签: Terraform
aws-cliterraform-provider-awsaws-backup
terraform是否支持从vault()恢复图像的备份功能
在阅读文档时,我发现它确实支持创建备份计划、分配资源和策略、创建vault,但不支持恢复映像或ebs卷
如何在我的terraform模板中添加还原块terraform的执行模型设计用于将预期状态的声明性描述转换为强制操作以自动达到该状态,因此其模型并不真正支持“异常”过程,如还原备份
但是,您可以开发一个与Terraform一起恢复备份的过程,其中主要的恢复操作是在您自己的自动化中使用AWS控制台、AWS CLI或API完成的,然后在
我正在尝试将安装作为的一部分。上面说插件应该安装在~/.terraform.d/plugins。RKE文档说明插件应该安装在~/terraform.d/plugins/上
为了协调冲突信息,我尝试将二进制文件复制到以下所有位置,但Terraform从未看到任何位置:
~/.terraform.d/plugins/terraform-provider-rke
~/.terraform.d/plugins/rke
~/.terraform.d/plugins/darwin_amd64/terrafo
我希望指定要在我的工作区中加载的.tfvars文件
与在工作区中输入所有内容相比,使用文件管理变量要容易得多。我会解释的
我有两个空间:
数据库qa
数据库产品
工作区的Repo如下所示:
├── database/
│ ├── main.tf
│ ├── main.qa.tfvars
│ ├── main.prod.tfvars
我想为数据库qa工作区加载main.qa.tfvars,为数据库prod工作区加载main.prod.tfvars
为了安全起见,我保留工作区变量上
我无法在aws\u db\u subnet\u组中提供多个子网ID
resource "aws_subnet" "rds_subnet_" {
count = 3
vpc_id = aws_vpc.app_vpc.id
cidr_block = cidrsubnet(aws_vpc.app_vpc.cidr_block, 8, count.index+30)
availabili
我现在面临的问题是这个。我正在努力使我的政策更加灵活。因此,我将它们转换为一个文件,而不是使用EOF
如何使模板文件识别数字值
“${max\u untaged\u images}”和“${max\u taged\u images}”假定为数字
Aws生命周期策略:
resource "aws_ecr_lifecycle_policy" "lifecycle" {
count = length(aws_ecr_repository.repo)
标签: Terraform
concourseterraform-modulesconcourse-pipelineconcourse-task
我有两个repo(由于我的管道设置,它必须是两个),一个repo包含创建S3 bucket所需的terraform脚本(非常简单),另一个repo包含后端设置,当我在本地测试时,我可以使用以下方法在第一个repo中下载模型:
module "xxxxxx-sagemaker" {
source = "../../the_first_repo_name/terraform"
}
这将通过运行“terra
我正在尝试使用terraform脚本创建lambda函数
我得到错误,说“错误创建lambda函数”,我把屏幕截图的错误也
这是地形脚本:
我在AWS管理控制台中创建了一个角色,并命名为“欢迎Lambda角色”。这就是我在下面的脚本中提到的角色。我不知道这是否是问题所在
provider "aws" {
region = "us-west-2"
access_key = "xxz"
secret_key = &qu
我正在尝试通过以下方式将1密码提供程序与Terraform一起使用:
terraform {
required_providers {
onepassword = {
source = "milosbackonja/1password"
version = "1.1.0"
}
}
required_version = "~> 0.14"
backend
问题:Terraform未检测/应用mongodb更改。我正在使用mongodbatlasprovider
概要:我创建了.tf文件以限制对所有微服务的访问。我们在部署分支之前运行MongoDB相关的更改,但在过去的10-15天中,我们开始面临一个问题,即当我们运行terraform apply时,它会检测到40-50%文件的更改。我们必须运行terraform apply 3-4次才能在atlas MongoDB中进行所有更改
示例.tf文件
terraform:0.13.7
provider
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 62 页