我在尝试使用Terraform在vsphere上部署CoreOS虚拟机时遇到了很大困难
到目前为止,这是我正在使用的地形文件:
# Configure the VMware vSphere Provider. ENV Variables set for Username and Passwd.
provider "vsphere" {
vsphere_server = "192.168.105.10"
allow_unverified_ssl = true
}
provider "ign
标签: Terraform
terraform-provider-azureterraform-template-file
环境:
Terraform v0.11.11
+ provider.azurerm v1.21.0
+ provider.random v2.0.0
+ provider.template v2.0.0```
问题:
Terraform v0.11.11
+ provider.azurerm v1.21.0
+ provider.random v2.0.0
+ provider.template v2.0.0```
您好
正在尝试配置TF以访问Azure Vault密钥。这是我的片段:
##
我有变量cidr=10.11.12.0/16
和资源计数
resource "aws_network_interface" "first" {
count = "${length(var.instance_names)}"
provider = "aws.base"
subnet_id = "${var.cidr}"
private_ips = ["${concat(
list(var.first_network_interface_private_ip
我正在尝试使用terraform创建代码管道作业。我已经有了一个正在工作的代码构建项目。以下是我的资源:
resource "aws_codepipeline" "my-project" {
name = "my-project"
role_arn = "${aws_iam_role.my-project-codepipeline.arn}"
artifact_store {
location = "${aws_s3_bucket.my-artifacts.buck
我想在另一个资源中重用通过远程exec provisioner启动的命令的输出值。没有令人讨厌的外部数据源,我怎么能做到这一点
根据:
随着您对地形的使用越来越高级,在某些情况下,您可能需要修改地形状态
在什么情况下你想直接改变地形的状态
与更改terraform代码本身相比,这样做似乎是一种非常危险的做法。您认为修改状态文件可能是危险的,因为这可能会损坏状态文件或导致terraform做一些您不希望它做的事情,因为状态文件从您的更改漂移到它所针对的提供商
但是,有时您可能希望修改状态文件,例如使用或添加在Terraform状态文件之外创建的资源(完全在Terraform之外创建,或仅使用其他状态文件创建),使用重命名T
CloudFormation不提供用于编排多个/多个堆栈部署的工具。例如,考虑一个微服务/分层体系结构,其中需要将许多堆栈部署在一起以复制环境。对于cloudformation,您需要使用stacker之类的工具或自行开发的工具来解决问题
Terraform是否提供多堆栈部署编排解决方案 Terraform在目录级别上运行,因此您可以简单地在同一位置将两个堆栈定义为一大组资源或模块
在Terraform中,如果您需要同时部署多个资源,那么您通常会使用一个,然后提供一个较小的表面积来配置该模块。这
我的用例是
我有每个地区的数据中心列表。如果我把数据中心作为输入,我想得到区域。我可以创建一个像达拉斯-美国南部,wdc-美国南部这样的地图。在这种情况下,名单将会很大。有没有一种方法可以在terraform中有效地实现这一点?你能展示一些你迄今为止尝试过的代码,并解释一下这些代码在你的用例中是如何不起作用的吗?我不知道如何进行编码,因为没有对条件的支持。我的要求是us south={dal,wdc}eu gb={fra,ams}我的输入是dal。如果(输入美国南部)则地区=美国南部如果(输入欧
我最近开始使用Terraform,作为VPC配置的一部分,我在理解cidrsubnet()函数中的netnum时遇到了一些困难
我调查了一下,上面说:
netnum(第三个参数)是一个可以
表示为不超过newbitsbinary的二进制整数
数字,用于填充添加到
前缀-仍然有一些困难理解它
例如:
cidrsubnet("100.121.0.0/20", 8,64) --> 100.121.4.0/28
cidrsubnet("10.1.2.0/24", 4, 15) --> 1
正在寻找使用terraform的建议和一些一般性指导,在我的例子中,使用服务完全拆分状态
这是一个如何维护目录结构的示例
global
├── iam
│ ├── .tf files
├── kms
│ ├── .tf files
└── organization
└── root
├── .tf files
├── project_1_OU
| └── .tf files
├── project_2_OU
我将terraform从0.11迁移到了0.12。我有一个模块,它应该提供AWS SQS队列和死信队列(可选)
我的回购协议是
我在队列资源上具有以下条件:
resource "aws_sqs_queue" "regular_queue_with_dl" {
count = var.attach_dead_letter_config ? 1 : 0
redrive_policy = var.attach_dead_letter_config ? data.template_file.r
我正在重构一些Terraform模块,并得到:
Error: Provider configuration not present
To work with
module.my_module.some_resource.resource_name its
original provider configuration at
module.my_module.provider.some_provider.provider_name is required, but it
has been rem
我试图从terragrunt.hcl输入中传递一个列表,其中包含容器的环境变量。但我不能让它工作
terragrunt.hcl:
inputs = {
containers_env = {
"ENV_TEST" = "testing"
"ENV_TEST_2" = "testing2"
}
}
main.tf:
resource "kubernetes_cron_job" "cronjob" {
metadata {
na
尝试升级到Terraform 0.12时,我遇到以下错误:
Error: Invalid function argument
on ../../../../../modules/aws/mybox/main.tf line 85, in resource "aws_route53_record" "this":
85: name = "ip-${replace(module.this_mybox.private_ip[0], ".", "-")}"
|-----------
我已经看过了terraformapply文档,我不知道该怎么做。我想在bash脚本中运行terraformapply,我不希望出现我必须回答yes的提示。我只想让它运行。有推荐的方法吗?谢谢 地形应用-自动批准
我在bash“alias tfaa='terraform apply-auto approve'中使用了more short
我正在使用Terragrunt运行Terraform,所以我实际上不确定从哪个路径调用Terraform
因此,我尝试获取当前工作目录,如下所示:
resource null_resource "pwd" {
triggers {
always_run = "${uuid()}"
}
provisioner "local-exec" {
command = "echo $pwd >> somefile.txt"
}
}
但是,生成的文件是空的
有什么
我正在使用terraform kubernetes_入口资源创建入口:
resource "kubernetes_ingress" "this" {
metadata {
name = "mongodb-ingress"
}
spec {
backend {
service_name = "mongodb"
service_port = 9092
}
rul
我正在使用编排工具使用开源版本自动化Terraform部署。我想知道更多关于可用工作区选项的信息
更具体地说,当两个开发人员同时在两个不同的工作空间中使用相同的可执行文件执行Terraform部署时会发生什么?模板的范围在目录中,但工作区的范围是什么?范围是绑定到单个Terraform可执行文件,还是也受目录驱动
非常感谢您的帮助 默认情况下,它也是目录驱动的。但是您可以配置不同的服务器(AWSS3、PostgreSQL等)
如果使用AWS S3,每个工作区将表示bucket中的不同文件。如果使
首先,我创建了3个子网,我想把它们转换成地图形式,以便查找隐藏的代码。
例如:
下面是使用查找的代码
resource "aws_instance" "server" {
count = 3
subnet_id = "${lookup(var.subnets, count.index % 3)}"
}
我该怎么办?谢谢大家另一种方法是什么,它基于列表更具扩展性:
variable "subnet_cidrs
我不熟悉地形,喜欢创建“随机”实例。
一些设置,如操作系统、安装脚本。。。将保持不变。大部分地区/区域都会发生变化
我该怎么做?
Terraform似乎已经知道哪些组合是有效的。例如,对于AWS EC2或lightsail,如果您选择了错误的组合,它会抱怨。我想这会减少工作量。我想知道这是否对每个提供者都有效
在Terraform每次运行时仅更改区域或分区的情况下,如何自动创建有效配置
编辑:配置看起来像:
terraform {
required_providers {
a
我正在尝试引用其他资源中的辅助范围:
resource "google_compute_subnetwork" "mysubnetwork" {
name = "mysubnetwork"
....
secondary_ip_range {
range_name = "mysecondary"
ip_cidr_range = "10.0.0.0/24&qu
标签: Terraform
google-kubernetes-engineterraform-provider-gcp
因此,我正在尝试创建两个节点池,ingress nodepool和web nodepool,ingress在区域us-west1-a中必须只有1个实例,web必须有3个实例分布在其他区域。然而,当我运行terraform代码时,结果是入口池在webpool上的3个区域和3个实例上有3个入口
这就是我的集群区域和位置的定义方式,我知道,通过不在location参数中定义区域,它会在整个区域中创建所有内容,并将其分布到该区域的各个区域,但如果在集群模块上放置location=“us-west1-a”
我正在使用OpenPolicyAgent针对terraform状态的JSON输出编写策略
以下是状态文件的结构:
{
"format_version": "0.1",
"terraform_version": "0.12.28",
"values": {
"root_module": {
"resources": [],
我正在尝试编写一些代码,这些代码将采用如下输入结构:
projects = {
"project1" = {
namespaces = ["mynamespace1"]
},
"project2" = {
namespaces = ["mynamespace2", "mynamespace3"]
}
}
并为每个资源提供多个资源,
我的地形配置如下所示:
使用提供商aws创建RDS数据库
使用提供程序https://github.com/cyrilgdn/terraform-provider-postgresql,创建Postgresql数据库等
后者通过单独的自定义模块完成
现在,当调用terraform destroy时,我的状态是集群被删除,但数据库没有被删除,TF抱怨出错
错误:错误检测功能:错误PostgreSQL版本:拨号tcp:lookup[host].eu-west-1.rds.amazonaws.com
这就是我的配置的样子,因为当我将tfvars文件作为CI CD的一部分运行时,我没有将其签入到源代码管理中,因此我需要使用-var而不是-var文件。执行此操作时,与-var一起使用时,如何表示列表
config.tfvars包含
subnets = ["subnet-0160740dss2324df7e1","subnet-0faa77cc23fs6776"]
prefix = "tktest2"
count_webapp = 1
标签: Terraform
terraform-provider-awsterraform0.12+terraform-modules
Iam对各种帐户使用下面的bucket策略,将日志推送到位于“ACCOUNT-ID-0”中的集中S3 bucket中:
我在帐户ID-0中有此策略
{
“版本”:“2012-10-17”,
“声明”:[
{
“Sid”:“AWSLogDeliveryWrite”,
“效果”:“允许”,
“委托人”:{
“服务”:[
“cloudtrail.amazonaws.com”,
“config.amazonaws.com”,
“delivery.logs.amazonaws.com”
]
},
“操作
标签: Terraform
terraform-provider-awsinfrastructure-as-code
我在执行地形规划时遇到以下错误
Error: Error tls: crypto/x509: system root pool is not available on Windows
│
│ with module.eks.module.eks.data.http.wait_for_cluster[0],
│ on .terraform\modules\eks.eks\cluster.tf line 68, in data "http" "wait_for
我的脚本中有一个null\u资源,如下所示,我有一个文本文件,在其中我获得端口否,如下所示
40000
40001
如何逐个访问端口并让脚本连接到该端口,如有任何帮助,我将不胜感激。类似的内容
locals {
ports = [ split("\n", file("./ports.txt") ) ]
}
resource "null_resource" "opsfile" {
for_each = to
目标:
在gcp控制台中永久保留一个静态ip(永久):例如“ip-drupal-1”
在terraform子模块中,“/module_drupal”使用“ip-drupal-1”
调用“terraform destroy”时,ip-drupal-1必须保留在gcp中。如果静态ip被破坏,这将生成另一个新的,我必须更新DNS记录
以下程序没有达到这一目标。有没有任何示例代码
我添加了一个“terraform import-var file=“main.tfvars”google\u compute
我希望使用google_os_config_guest_Policys资源,但在将值传递到软件包存储库的嵌套代码块时遇到问题
子模块main.tf
package_repositories {
dynamic "apt" {
for_each = var.apt
content {
archive_type = lookup(apt.value, "archive_type", "
要获取当前AWS id,我需要:
data "aws_caller_identity" "current" { }
这使得它在data.aws\u caller\u identity.current.account\u id中可用。是否有某种方法可以使其仅作为帐户\u id使用?我试过:
variable "account_id" {
default = "${data.aws_caller_identity.current.account_id}"
}
但是它说我不能在变量中做字符串插
考虑一个地形模块:
module "blah-asg" {
source = "asg"
asg_max_size = 1
asg_min_size = "${var.min_blah}"
...
}
我的问题
如何从中提取变量
我试过什么
以失败告终
获取插件时出错:模块根目录:发生1个错误:
*输出“blah asg”:变量asg.blah-asg.arn中引用的未知资源“asg.blah”
我的问题
如何在Terraform中输出模块字段?模块本
我试图用以下语法将变量从根模块传递到子模块:
main.tf:
provider "aws" {
version = "~> 1.11"
access_key = "${var.aws_access_key}"
secret_key = "${var.aws_secret_key}"
region = "${var.aws_region}"
}
module "iam" {
account_id = "${var.account_id}"
source =
在使用terragrunt为AWS Beanstalk eInEnvironment中的应用程序提供资源时,它提供:
Initializing modules...
- module.db
- module.db.db_subnet_group
- module.db.db_parameter_group
- module.db.db_option_group
- module.db.db_instance
Initializing the backend...
Initializing p
我面临着terraform模块和资源之间的依赖性问题。我的模块依赖于一个资源,但我还没有找到如何在Terraform中显式地暗示这一点。在创建模块代码所依赖的资源之前运行模块代码时,这自然会导致错误
我浏览了互联网,发现很少有关于模块依赖于其他模块的讨论,包括一些关于如何解决模块中缺乏“依赖”的建议。但是,对于模块依赖于资源的情况,我还没有找到任何建议/解决方法
我试过下面的建议,但没用
下面是我的标准azure nic和vm模块的代码
resource "azurerm_netw
如果我用terraform创建基础设施,然后有人手动从AWS中删除一些资源并手动重新创建。如果我申请terraform呢。它会重新创建代码吗?答案是它取决于所管理的资源
大多数AWS产品都有自动生成的ID。因此,您无法真正重新创建已销毁的资源。即使配置、名称和标记相等,新资源也将具有不同的ID。例如,EC2实例就是这样
这条规则也有例外,S3桶就是其中之一。S3 bucket的ID是它自己的名称。AWS使用的另一个标识符ARN也源自其名称。因此,如果您删除一个bucket并重新创建它,Terra
标签: Terraform
terraform-provider-awsterraform-cloud
在上,我在使用AWS SSO凭据的工作区中,这意味着我在变量中有AWS\u访问密钥\u ID+AWS\u机密密钥\u访问密钥+AWS\u会话\u令牌。我的会话可能会过期
我的问题是我的AWS会话确实过期了,但州政府仍在“计划”中
我试过“取消”和“强制取消”,但都没用
现在已经5天了,我想释放我的资源。
我可以手动操作,但我想保持状态同步
请注意,此错误也存在于CLI上,terraform只是不处理已过期的会话。但我至少可以打断它
我在上创建了ticket#20704。地形团队修复了它
现在我
当我调用terraform destroy时,我将得到以下错误,与使用的任何提供者的下一个错误类似
Error: fork/exec /home/shura/code/devops/terragrunt/aws/eci-sandbox/eu-west-1/ops/dummy/.terragrunt-cache/J-_sukmO5D-z2WncfrbXY8hafRo/FQ4q4AgnhaqBBwSZgGy_ql6eP1Y/.terraform/plugins/linux_amd64/terrafo
我正在尝试使用flyway为db迁移创建任务定义,但没有成功。
我在谷歌上找不到任何例子。
具体来说,json文件在CMD部分中应该是什么样子
编辑
遵循@ydaetskcoR请求-澄清问题
代码应该由terraform提供。在研究了一些代码后,我得出了以下结论:
data "template_file" "db_mg_template" {
template =
"${file("${path.module}/templates/task_definition_dbmgr.json"
标签: Terraform
terraform-provider-awsterraform0.12+
我的地形示例。tf:
本地人{
标准标签={
团队=变量团队
project=var.project
组件=变量组件
环境=var.environment
}
}
提供商“aws”{
profile=“profile”
区域=变量区域
}
资源“aws密钥对”“安全密钥”{
key\u name=“安全密钥”
public_key=文件(“.ssh/key.pub”)
}
#我们的应用程序将使用的S3存储桶的新资源。
资源“aws\U s3\U bucket”“项目\U bucket”{
#注意
标签: Terraform
terraform-provider-awsaws-event-bridge
我在网上找不到文档或示例Terraform模块
如何在AWS事件桥中创建自定义事件总线?在撰写本文时,AWS的Terraform提供程序尚不支持创建事件桥事件总线
我们必须使用默认事件总线,或者使用AWS CLI或控制台创建它
警告:EventBridge目前有几个严重的IAM漏洞:您不能限制IAM主体也可以发布事件的总线,它使用服务主体而不是服务链接角色主体来访问诸如用于加密总线的KMS密钥之类的内容
您可以使用null_资源provisioner作为缺少的提供程序资源的解决方案(假设您使用环
我设置了一个工作区,我正在遵循动手指南
我在“运行”选项卡中看到以下消息:
当我尝试按下队列计划按钮时,我收到以下错误:
我配置的变量是:
我是否需要配置其他东西才能对计划进行排队
从cli执行时,我能够触发只包含计划步骤的运行(在TF Cloud中)。如果我直接访问特定的运行url,则可以查看运行执行
欢迎任何帮助、建议 我想你已经解决了这个问题,但我还是发布了我的解决方案
发生此问题时,我的工作区名称设置错误
有两个名称相似的工作区,我不知道为什么会发生这种情况。然后我删除了其中一个
我正在使用https://github.com/cloudposse/terraform-aws-acm-request-certificate使用terraform和aws生成证书
如何在terraform中的同一文件中运行多个PUL域?(非子域)
我尝试此操作,但出现错误错误:重复模块调用:
module "acm_request_certificate" {
source = "git::https:/
我有一个带有映射的变量文件:
variable "machines" {
default = {
// type = map(string)
"VM1" = {
"name" = "VM_1"
"ip" = "192.168.10.10"
"procs" = 8
"ram" = 8192
如何强制Terraform从头开始重建其计划和tfstate文件
我正在考虑将我的IAC从GCP的部署管理器转移到Terraform,所以我想我应该运行一个测试,因为我的TF已经生锈了。在我的第一步中,我成功地部署了网络、子网、防火墙规则和计算实例。但它都在一个文件中,不能很好地扩展到多个环境
我决定把它分成几个模块(网络和计算),那天的实验我已经做完了,所以我用一个terraformdestroy
所以今天我把所有的东西都重构到它的模块中,无意中把网络资源从网络模块复制到了计算模块。运行了一个
我想为一个安全组设置一个入口“Custome ICMP(IPv4)”规则,但页面不清楚我需要为from_port和to_port值设置什么。它表示(类似于to_端口)
什么是ICMP类型编号?如果我在AWS控制台中手动执行此操作,则端口默认为N/A您可以从此站点获取ICMP类型号
假设您希望允许对服务器进行ping(Echo),您可以使用以下地形配置
from_port = 8
to_port = 0
protocol = "icmp"
如果要允许所有ICMP,可以使用以
我正在创建一个模块来启动一个基本的web服务器
我试图得到它,这样如果用户没有指定AMI,那么该区域的ubuntu映像就会被使用
我有一个data块来获取该区域ubuntu 16.04图像的AMI ID,但我不能将其设置为变量的默认值,因为插值不起作用
我的模块如下:-
main.tf
resource "aws_instance" "web" {
ami = "${var.aws_ami}"
instance_type = "${var.instance_type}"
securi
我正在尝试编写一些TF,在给定站点的单个FQDN的情况下,它将生成一个ACM证书,创建R53记录进行验证,并在单个TF过程中运行验证
我没有使用子域,我让它为一个FQDN工作,但由于TF的性质,我希望能够在将来向变量添加另一个FQDN以拥有多个证书
当我运行下面的代码时,我得到了错误:
Error: Error running plan: 1 error occurred:
* aws_acm_certificate_validation.cert: 2 errors occurred:
我需要将cidr块列表以[“0.0.0.0/23”、“0.0.0.1/23”、…]等形式传递给模块
我有两个cidr块,它们来自子网数据源,我可以引用它们作为示例:
cidr_blocks = [data.aws_subnet.subnet1.id,data.aws_subnet.subnet2.id]
我还有一个变量,取决于环境,有一个要传入的cidr_块的特定列表,设置为示例:
custom_cidrs = [""0.0.0.0/23","0.0.0
上一页 1 2 3 4 5 6 7 8 9 ...
下一页 最后一页 共 62 页