我希望我的 lambda 调用 API,这需要一个 API 令牌。我想将 API 令牌放入 lambda 环境变量中。我怎样才能让 terraform 做到这一点?还是我以错误的方式接近这个?
我正在使用 Terraform proparar。在一种情况下,我需要执行“local-exec”配置并将命令的输出 [这是 IP 地址数组] 用于下一个“远程执行”配置。
而且我无法将“local-exec”临时输出存储在本地变量中以供以后使用。我可以将它存储在本地文件中,但不能存储在中间变量中
count = "${length(data.local_file.instance_ips.content)}"
Run Code Online (Sandbox Code Playgroud)
这是行不通的。
resource "null_resource" "get-instance-ip-41" {
provisioner "local-exec" {
command = "${path.module}\\scripts\\findprivateip.bat > ${data.template_file.PrivateIpAddress.rendered}"
}
}
data "template_file" "PrivateIpAddress" {
template = "/output.log"
}
data "local_file" "instance_ips" {
filename = "${data.template_file.PrivateIpAddress.rendered}"
depends_on = ["null_resource.get-instance-ip-41"]
}
output "IP-address" {
value = "${data.local_file.instance_ips.content}"
}
# ---------------------------------------------------------------------------------------------------------------------
# Update the instnaces by installing newrelic agent using remote-exec
# ---------------------------------------------------------------------------------------------------------------------
resource "null_resource" "copy_file_newrelic_v_29" {
depends_on = ["null_resource.get-instance-ip-41"]
count = "${length(data.local_file.instance_ips.content)}"
triggers = {
cluster_instance_id …Run Code Online (Sandbox Code Playgroud) 如果有一种方法可以在 Terraform 创建 aws_lb 时获取 aws_lb 资源的分配 IP 地址?
如AWS 文档 - NLB - 要找到要列入白名单的私有 IP 地址,我们可以找出与 ELB 关联的 IP 地址。
为了能够设置安全组以将 ELB IP 地址列入白名单,因为网络负载均衡器不能没有安全组,因为网络负载均衡器没有安全组。
考虑过aws_network_interface但它不会出现错误。
错误:找不到匹配的网络接口
另外我认为 datasource 假设资源已经存在并且不能用于 Terraform 创建的资源。
当我们尝试运行带有远程状态处理的 terraform 脚本时,我们会遇到以下问题:
错误刷新状态:S3 中的状态数据没有预期的内容。这可能是由于 S3 处理先前状态更新的异常长时间延迟造成的。请等待一两分钟,然后重试。如果此问题仍然存在,并且 S3 和 DynamoDB 都没有遇到中断,您可能需要手动验证远程状态并将存储在 DynamoDB 表中的 Digest 值更新为以下值
我正在尝试利用 Rancher Terraform 提供程序创建一个新的 RKE 集群,然后使用 Kubernetes 和 Helm Terraform 提供程序来创建/部署资源到创建的集群。我正在使用此https://registry.terraform.io/providers/rancher/rancher2/latest/docs/resources/cluster_v2#kube_config属性来创建具有新集群的 kube 配置的本地文件。Helm 和 Kubernetes 提供程序需要提供程序配置中的 kube 配置:https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs。有什么方法可以让提供程序配置等待创建本地文件?
kubernetes terraform rancher rke terraform-provider-kubernetes
一个团队已经将一个cloudformation模板编写为一个.yml提供一堆资源的文件.
是否可以通过在Terraform中执行来利用此文件?还是必须重写?
我是terraform的新手,刚入门.
如果我使用AWS CLI,我会执行这样的命令,
aws cloudformation create-stack --stack-name my-new-stack --template-body file://mystack.yml --parameters ParameterKey = AmiId
我想在我的terraform配置中包含相当于此命令的内容.
如果有可能,你可以给我一个例子,我真的很感激.
谢谢!
我正在使用AWS CodeBuild和Terraform自动部署基于Lambda的服务.我有一个非常简单的buildscript.yml完成以下内容:
"获取信用档案"这一步骤是我遇到困难的地方.我有一个简单的bash单行程序,它抓取AWS容器信誉curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI,然后按以下格式将它们保存到文件中:
export AWS_ACCESS_KEY_ID=SOMEACCESSKEY
export AWS_SECRET_ACCESS_KEY=MYSECRETKEY
export AWS_SESSION_TOKEN=MYSESSIONTOKEN
Run Code Online (Sandbox Code Playgroud)
当然,显而易见的一步就是简单地source将这些变量添加到我的环境中以供Terraform使用.但是,当我这样做时source /path/to/creds_file.txt,CodeBuild返回:
[Container] 2017/06/28 18:28:26 Running command source /path/to/creds_file.txt
/codebuild/output/tmp/script.sh: 4: /codebuild/output/tmp/script.sh: source: not found
Run Code Online (Sandbox Code Playgroud)
我试图安装source通过,apt但后来我得到一个错误,说source无法找到(是的,我已经运行apt update等).我在CodeBuild的Python 2.7环境中使用标准的Ubuntu映像.如何在Codebuild中为源凭据文件获取Terraform工作凭据.
谢谢!
我正在使用HTTP数据源从内部服务检索数据.该服务返回JSON数据.
我无法插入返回的JSON数据并在其中查找数据.
例如:
模块A.
data "http" "json_data" {
url = "http://myservice/jsondata"
# Optional request headers
request_headers {
"Accept" = "application/json"
}
}
output "json_data_key" {
value = "${lookup(data.http.json_data.body, "mykey")}"
}
Run Code Online (Sandbox Code Playgroud)
main.tf
provider "aws" {
region = "${var.region}"
version = "~> 0.1"
}
module "moduleA" {
source = "../../../terraform-modules/moduleA"
}
resource "aws_instance" "example" {
ami = "ami-2757f631"
instance_type = "${module.moduleA.json_data_key}"
}
Run Code Online (Sandbox Code Playgroud)
查找功能将无法在JSON数据中提取密钥.
有没有办法将JSON数据解码为terraform地图?
如何检查terraform字符串是否包含另一个字符串?
例如,我想特别在名称中使用"tmp"处理terraform工作区(例如,允许在没有快照的情况下删除rds实例),所以像这样:
locals
{
is_tmp = "${"tmp" in terraform.workspace}"
}
Run Code Online (Sandbox Code Playgroud)
据我所知,substr插值函数没有实现这一点.
我想将现有的AWS CloudFormation模板(yaml)自动转换为Terraform模板(hcl)。
任何人都可以建议一些工具,方法等吗?
terraform ×10
amazon-elb ×1
aws-lambda ×1
bash ×1
kubernetes ×1
rancher ×1
rke ×1
terraform-provider-kubernetes ×1
variables ×1