我有一个terraform回购协议,看起来像这样:
基础设施
全球的
main.tf
main.tf文件引用远程存储库中的模块:
module "global" {
source = "git@github.com/company/repo//domain/global"
}
上述模块引用同一远程回购中的另一个模块:main.tf
module "global" {
source = "git@github.com/company/repo//infrast
我正在演示TFE的SaaS产品,运行我的计划时出错
Error: module.vpc.var.database_subnets: key "default" does not exist in map var.vpc_CIDR in:
${cidrsubnet(var.vpc_CIDR[terraform.workspace],4,6)}
Vars文件如下所示
variable "vpc_CIDR" {
type = "map"
default = {
"dev" =
我正在使用Terraform生成一个Azure Kubernetes服务集群(以及其他东西),当我运行Terraform时,它会自动生成AKS集群使用的不同资源。我可以在AKS集群上选择一个自定义名称,但自动生成的资源几乎是随机名称
有没有办法在Terraform中自动生成的资源上选择我自己的自定义名称
示例:
resource "azurerm_kubernetes_cluster" "compute" {
name = "MyCluster"
l
我有一个很好的地形计划,它完美地描述了我在谷歌云平台上的基础设施,然而,我有一个问题:因为我的存储库不是完全私有的,所以我的计划的一些步骤是加密的,必须使用
这意味着我的计划必须分为两个地形阶段:
设置GoogleCloud项目并创建一个密钥环和密钥(之后,我加密机密并将其放入variables.tf文件中)
应用整个计划
Terraform是否支持将我的计划分解为多个阶段?我应该如何实现这一点?虽然terraform使我们能够自动创建资源,但一些初步步骤需要手动完成,如帐户创建、计费设置等。类
我正在尝试通过terraform设置VPN隧道选项:
resource "aws_vpn_connection" "example" {
customer_gateway_id = "${aws_customer_gateway.example.id}"
transit_gateway_id = "${aws_ec2_transit_gateway.example.id}"
type = "${aws_customer_gateway.example.
我开始使用Terraform,我有一个由“Terraform init/apply”创建的.Terraform文件夹,其中包含:
./plugins/linux_amd64/lock.json
./plugins/linux_amd64/地形提供商谷歌
./plugins/modules/modules.json
terraform.tfstate
我应该对这些文件进行版本设置吗?我想说不…terraform目录是一个本地缓存,terraform会在其中保留一些文件,以便对该配置进行后续操作
我正在尝试使用terraform在ec2中安装nginx,并且在私钥行上用红色下划线表示“未知令牌:35:23标识文件”
provisioner "remote-exec" {
inline = [
"sudo apt-get update -y",
"sudo apt-get install nginx -y",
"sudo /etc/init.d/nginx start"
]
connection {
t
我有一个问题,我在从项目中构建模块时遇到了困难
我有以下文件夹结构:
terraform/
modules/
kubespray/
modules/
compute/
ips/
network/
main.tf
variables.tf
roles/
kubespray/
terraform_setup/
main.tf
在kubespray/mai
我有
resource“aws\u spot\u instance\u request”服务器“{},它的启动很好
并且需要资源“aws\U ebs\U卷”“溢出”{}。对于EBS需要可用性区域,我尝试从aws\u spot\u instance\u request.server.availability\u zone获取该区域,但在.tfstate中,服务器的“可用性区域”为空。这导致:
错误:引用未声明的资源
如何获取spot实例的可用性区域?从外观上看,可用性区域属性不是从aws\u
我想知道是否有可能合并两张地图而不替换主地图对象
我的地图对象定义如下:
variable "apps" {
type = map(object({
is_enabled = bool
cost_center = string
}))
default = {}
}
locals {
default_apps = {
"api-1" = {
is_enabled = false
cost_cente
地形v0.12.17
我有一个脚本,我想在其中执行此操作,也就是说,我希望它使用传入的jenkins\u version变量搜索AMI
$ terraform plan -var "jenkins_version=2.249.3" -out out.output
data "aws_ami" "jenkins_master_ami" {
most_recent = true
filter {
name = &quo
我的目标是创建多个IAM用户,并在一段代码中为每个用户附加多个策略,但我无法实现这一点
你能帮我查一下密码吗
下面是我试图运行的代码,但它失败了
resource "aws_iam_user" "example" {
count = "${length(var.aws_iam_user)}"
name = "${element(var.aws_iam_user,count.index )}"
}
resou
使用Terraform v0.14.7,我正在创建一个cname记录集,但当我输入命令Terraform apply时,我收到以下错误消息:
错误:未设置更新服务器
在Azure平台的“DNS区域”中,我已经创建了一个区域,名为:tech.com.br:
provider "azurerm" {
features {}
}
resource "dns_cname_record" "foo" {
zone = "tech.
我们有很多包含无服务器微服务的存储库,因此为每个存储库保留另一个存储库并不容易
.
├── azure-pipelines-prod.yml
├── README.md
├── src
│ ├── Whoa.API
│ ├── Whoa.Core
│ ├── Whoa.Data
│ ├── Whoa.Services
│ └── Whoa.sln
└── tf
├── dev.tfvars
├── main.tf
├── resources
└
我不确定这是否可行,但我想我应该先问一下
我有一个terraform中定义的codepippeline,有一个具有多个动作的阶段
Stage正在从CodeCommit中提取代码,每个操作都定义了我希望在管道中使用的存储库
我想创建一个包含CodeCommit存储库名称列表的变量,然后为该列表中的每个存储库动态创建一个操作
使用terraform,这可能吗?我知道您可以使用count正常地实现这一点,但我认为这只是在资源级别上
代码片段如下所示:
resource "aws_codepipelin
此代码将创建一个名为EC2实例的EC2实例:
provider "aws" {
region = "eu-west-1"
}
module ec2 {
source = "./ec2_instance"
name = "EC2 Instance"
}
但是,如果我尝试使用random\u pet资源,实例名称将变为空字符串
provider "aws" {
region = "eu-west-1"
}
resource "random_pet" "server" {
l
我正在尝试使用Terraform脚本在Azure中创建一个服务结构集群。in Terraform发布了一个“服务结构集群”(azurerm_服务结构集群)资源。该资源仅创建服务结构管理部分,即不创建vm规模集或网络资源
如何通过Terraform创建工作SF群集?Terraform azurerm\u服务\u结构\u群集资源仅提供管理。要配置节点,请使用配置SF节点的service fabric extension部署VM
有关信息,请参考官方提供商GitHub上的示例
这没有帮助吗?不。有了
我现在有一些地形,看起来像这样:
resource "aws_autoscaling_group" "my_asg" {
...
tag {
key = "ManagedBy"
value = "Terraform"
propagate_at_launch = true
}
}
问题是这个代码块相当大,而且许多标记在多个ASG中都是通用的,所以为了尝试将其缩小到更易于管理和减少重复,我想对通用标记执
我正在开发一个自动化流程,该流程应接受组和服务帐户,并将它们作为成员添加到GCP中的子网中。为此,我正在使用地形资源google_compute_subnetwork_iam_成员
根据下面的文档链接,terraform应在应用仅包含新成员的配置文件时保留子网的以前成员。但当我应用配置时,它会销毁所有以前的成员并添加新成员。如果我遗漏了什么,请告诉我
地形资源名称:谷歌计算子网iam成员
文档链接:
谢谢
Sandeep我认为它指的是所有以前没有被terraform创建的成员
当您手动创建一个文
我在GCP上使用TF0.11.11。我已将backend.tfvars文件设置为按状态文件存储在GCP存储桶中:
# bucket where terraform state file will be kept
bucket = "this-is-my-tf-bucket"
# folder in the bucket where the terraform state file will be kept
prefix = "bucket.folder.sbx"
credentials =
标签: Terraform
terraform-provider-gcpterraform0.12+
main.tf在我的根提供程序中:
provider "google" {}
module "organisation_info" {
source = "../../modules/organisation-info"
top_level_domain = "smoothteam.fi"
region = "us-central1"
}
module "stack_info" {
source = "../../
我正在考虑,但我不确定如何将其应用于我的情况:
我的目标:
我想订阅rds事件,以便在从快照完全恢复临时数据库的数据时调用lambda函数
详细信息:
以下是我的工作流程:
1) lambda函数start\u restore在预定时间运行。这
函数是用python编写的,并使用boto3创建临时数组
mysql数据库,名称如temp-sales-20190701。该功能将
查找sales的最新数据库快照并将其还原到
temp-sales-20190701
2) 恢复完成后,我想在服务器上执行一
我正在使用将多个文件打包到一个zip文件中。当我像这样定义存档时,它工作得很好:
data "archive_file" "archive" {
type = "zip"
output_path = "./${var.name}.zip"
source_dir = "${var.source_dir}"
}
但是,我不希望归档文件包含var.source\u dir中的所有文件,我只想要其中的一个子集。我注意到归档文件提供程序有一个source\u file属性,因
只需运行TerraformPlan,它就给出了需要针对GCPAPI运行的配置。按照计划,它必须摧毁一些实体并重新创建它们。这些模块之间并不相互依赖。下面是示例输出
只是想知道创建(在本例中更像“覆盖”)是发生在销毁之前,还是发生在销毁之前,或者是完全随机的
------------------------------------------------------------------------
An execution plan has been generated and is sh
我想创建具有版本控制的GCS bucket
我创建了子模块
resource "google_storage_bucket" "cloud_storage" {
project = "${var.project}"
name = "${var.storage_name}"
location = "${var.location}"
storage_class = "${var.storage_class}"
versioning = "${var.versi
标签: Terraform
infrastructure-as-codeterragrunt
我试图使用2-repo IaC,所谓的后端是terragrunt模块,前端(或live)是用变量填充这些模块的实例化
下图描述了这两个回购协议的结构(terragrunt为后端,terraform live如名称所示为live one)
在myterragrunt/aws vpc/variables.tf中,有以下声明:
variable "remote_state_bucket" {
description = "The bucket containing the terraform r
我正在尝试在aws上部署简单场景:
新vpc,一个ec2实例位于该vpc中,一个eip指向该实例,aws_互联网_网关,aws_路由_表
部署工作很好,但是每次(在.tf文件中没有更改)当我计划/应用terraform时,都会显示:
Resource actions are indicated with the following symbols:
~ update in-place
-/+ destroy and then create replacement
Terraform wil
我正在使用terraform在OpenStack上设置docker swarm集群,并在新创建的VM上使用Ansible进行配置。我想先在虚拟机上执行docker swarm leave,当我减少实例(VM)数量并通过terraform apply应用更改时,该虚拟机将被删除。当我一个接一个地销毁实例时,它会工作,但当同时销毁两个实例时,它会给出一个错误
错误:循环:module.swarm\u cluster.openstack\u compute\u instance\u v2.swarm
Terraform registry AWS VPC示例具有下面的代码,在我看来,这是一个循环依赖项
data "aws_security_group" "default" {
name = "default"
vpc_id = module.vpc.vpc_id
}
module "vpc" {
source = "../../"
name = "complete-example"
...
# VPC endpoint for SSM
enable_ssm_en
0.12稍微好一点
我可以这样做:
value = aws_security_group.abc
而不仅仅是这个
value = aws_security_group.abc.id
但是,对于具有许多导入的工作区来说,这仍然很乏味。我想将所有状态输出为一个大地图,我可以在其他工作区中导入
我希望至少能够输出给定类型的所有资源,例如:
output "sgs" {
value = aws_security_group.*
}
然后sgs是工作区中所有SG资源的映射最接近于此的方法
在config.meta文件中,我存储了对google bigquery数据集的访问。访问对象是一个字典列表,其中每个字典都包含作为第一个元素和第二个元素元素的角色(例如特殊组或通过电子邮件对组),这些元素在列表中变化
我的目标是动态地应用访问。当访问列表上的每个字典都有相同的第二个元素时(例如,仅特殊组),这种方法非常简单但如何动态应用它们取决于第二个元素名称/值?
# config.meta file
{
"accesses": [
{
"ro
我有一些Terraform文件,从根目录的main.tf开始,有很多模块作为子目录,包括3个GKE集群。当我试图添加一个新集群(这是一个基于与其他集群相同的源文件的新模块)时,我把它搞砸了,但不知道如何添加。(虽然我是Terraform的新手,但我对CFN和CDK有相当多的经验,并且知道如何工作。所以我很确定我没有做任何愚蠢的事情)。
事情就是这样(或多或少):
我从地形图开始,以确保它处于清洁状态。Terraform说“没有变化。基础设施是最新的。”
我复制了一个现有的GKE集群模块,并给它的
这就是我得到的错误:
Error: A resource with the ID "/subscriptions/subid/resourceGroups/tf-nonprod/providers/Microsoft.Compute/virtualMachines/windows-web1" already exists - to be managed via Terraform this resource needs to be imported into the Stat
我需要有嵌套的循环逻辑。F.ex
我有一个本地的:
locals {
build_args = {
api: {
RAILS_ENV: "production"
}
client: {
NODE_ENV: "production"
}
}
}
现在我想用terraform连接到CircleCI,并在适当的CircleCI项目(api和客户端)中设置这些环境。关于circleci项目(项目名称
我正在使用tfeprovider开发terraform workspace automation,并希望使用下面的数据结构中的custom_标记创建terraform HCL变量作为映射
workspaces = {
"PROD" = {
"custom_tags" = {
"Application" = "demo"
"EnvironmentType" = &
作为升级的一部分,我有2个eks群集。我想处理假设策略,使其能够访问两个eks集群。这两个群集都位于同一AWS帐户中
我希望我的策略看起来像下面的策略。这样,我们不会更新任何角色,而只会假设策略来处理这两个集群
本地人.tf
eks_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": &q
标签: Terraform
terraform-provider-azureazure-monitoring
我刚刚发现,如果我们用terraform创建azure服务健康警报,代码如下
resource "azurerm_monitor_activity_log_alert" "servicehealth" {
name = "${var.client_initial}-MCS Maintain Service Health"
description = "${var.clien
标签: Terraform
terraform-provider-awsamazon-ekseksctl
使用terraform或eksctl生成新的AWKS EKS集群有什么好处吗
两者之间是否存在一些长期维护优势?虽然我还没有在Terraform上尝试过这一点,但我可以肯定地说eksctl方式是不推荐的。如果您对以代码形式管理基础设施感兴趣,至少不会。
使用eksctl,对现有集群的大多数更改都需要使用特定的eksctl命令。仅仅更改(声明性的)cluster.yaml(或您命名的任何名称)不会应用任何相关内容。是否要缩放节点组?好的,请使用eksctl scale nodegroup,因为更改
在此声明中,键字段的用途是什么?我们能给我们想要的任何价值吗
terraform { backend "azurerm" {
resource_group_name = "StorageAccount-ResourceGroup"
storage_account_name = "abcd1234"
container_name = "tfstate"
key
我正在尝试使用terraform在Hetzner云上通过私有网络设置Consor服务器
由于Hetzner还不支持自动加入,是否可以使用go sockaddr的GetPrivateIPs在配置文件中获取所有可用于重试加入的私有IP?go sockaddr说GetPrivateIPs将返回一个包含所有IP的空格分隔字符串。如何将此函数用于配置
据我所知,retry\u join需要这样一个文本数组:[“10.0.0.6”,“10.0.0.7”]
以下是etc/concur.d/server.hcl
标签: Terraform
amazon-ecsterraform-provider-aws
我有如下的地形配置,我正在使用它在各种prod/uat/dev环境中构建ECS集群
在我们的下文中,我们根据目标环境配置容器定义的logConfiguration
如果infra由开发者和env:dev启动,我们将logConfiguration配置为使用awslogs作为日志驱动程序及其后续日志驱动程序选项(即awslogs区域、awslogs组、awslogs流前缀)
如果我们的连续部署管道使用env:prod或uat启动infra,我们将logConfiguration配置为使用awsfi
下面是我的项目文件结构:
├── main.tf
├── tunnel
│ ├── main.tf
│ └── variables.tf
└── variables.tf
我正在尝试使用Terraform 0.15.1中的多个提供程序,如下所述->
在遵循这个例子之后,我无法让它工作。我现在简化了代码,只使用一个提供者别名(尽可能简单)。我得到的错误是:
╷
│ Error: Missing required argument
│
│ The argument "regio
有没有可能将terragrunt用作terraform稍后使用的预处理器,有没有人可以分享一下这方面的想法。谢谢 可能会帮助别人;通过使用欺骗的terraform调用terragrunt解决了这个问题
$cat tfspoof
#! /bin/bash
#
# Filename : tfspoof
# Date : 21 May 2021
# Author : Balaji Venkataraman (xbalaji)
# Description : terragr
我正在使用Terraform在Azure中创建资源,并将文件拆分为main.tf、variables.tf和Terraform.tfvars
为了有一个标准的命名约定,我在命名资源时遵循下面的过程
前缀环境资源名
例如,在main.tf中,我创建它如下:
resource "azurerm_resource_group" "rg" {
name = "${var.prefix}-${var.environment}-${var.resou
以下代码段是我创建Azure Signal服务的terraform配置:
output "signalrserviceconnstring" {
value = azurerm_signalr_service.mysignalrservice.primary_connection_string
description = "signalR service's primary connection string"
sensitive = true
Terraform配置文件中是否存在指向当前文件名的特殊变量?
我想将它用于各种资源中的描述字段,这样在系统中看到这些资源的人就会知道它们的主定义在哪里
e、 g
在myinfra.tf中
resource "aws_iam_policy" "my_policy" {
name = "something-important"
description = "Managed by Terraform at $
我尝试使用terraform实现aws lambda函数
我只是有null\u资源,它有本地provisioner和resource.archive\u文件,在所有准备工作完成后可以压缩源代码
resource "null_resource" "deps" {
triggers = {
package_json = "${base64sha256(file("${path.module}/src/package.json"))}"
}
provisioner "local
鉴于此:
resource "aws_instance" "example" {
ami = "ami-2757f631"
instance_type = "t2.micro"
}
resource "aws_eip" "ip" {
instance = "${aws_instance.example.id}"
}
从
我得到一个错误:
* aws_eip.ip: Failure associating EIP: InvalidParameterCombina
标签: Terraform
google-kubernetes-engineterraform-provider-gcp
我正在读一篇关于为个人项目建立一个负担得起的Kubernetes集群的博客,并设置了我的集群
问题是,随着时间的推移,我往往会忘记很多手动配置,所以我决定使用Terraform将其存储在声明性代码中
我已成功构建并应用了以下配置:
provider "google" {
credentials = "${file("secret-account.json")}"
project = "worklark-218609"
zone = "us-central1-a"
}
我一直在看terraform文档和课程中的一个UDE来寻找这个问题的答案,但找不到答案。我有一个jenkins管道正在用terraform构建AWS基础设施。这是使用通过配置的远程后端
terraform {
backend "s3" {}
}
街区。我想在本地开发中覆盖它,以便使用terraforminit生成本地状态文件。我试过运行terraforminit-backend=false,但我意识到这不是我想要的,因为它也不会创建本地后端。我已经看到terraforminit-backe
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 62 页