我有一个私有GKE集群,没有公共端点。我已经确认,我可以使用我的主体帐户对集群进行身份验证和运行kubectl命令。我正在从我测试kubectl命令的同一个VM部署Terraform,并将该IP地址添加到集群的主授权网络中。
每当我尝试使用Terraform部署工作负载标识时,我都会收到以下错误:
Error: Post "https://10.0.0.2/api/v1/namespaces/default/serviceaccounts": context deadline exceeded
on .terraform/modules/gke-workload-iden
当我跑的时候
terraform plan
它显示了从Terraform进行的更改列表,在输出结束时,它还通知“没有更改。您的基础设施与配置匹配”:
Note: Objects have changed outside of Terraform
Terraform detected the following changes made outside of Terraform since the last "terraform apply":
# google_sql_database_instance.db1 has been changed
~ re
我使用一个powershell脚本来执行terraform命令,当我将它与我的代码内联时,我会将terraform信息打印到主机上,这正是我想要的。
一旦我将命令包装在一个函数中,就不会得到terraform输出(只有在有错误响应时才会得到错误响应)。
有没有一种方法可以让输出实时地从函数返回(所以我不想知道发生了什么)?
例:
Terraform init
vs
Function Example
{
PARAM($dirPath)
cd $dirPath
terraform init
}
Example -dirPath "C:\Test\"
此外,
我有一些共享的terraform模块,目前被许多基于terraform 0.11的项目使用。我希望逐步将项目迁移到0.12,并试图保持模块与0.11和0.12的兼容性。我在列表属性上遇到了问题,这些属性已经从方括号语法中改变了。
在terraform中,在单个表达式周围需要0.11括号,以便向语言解释器提示希望提供列表解释:
# Example for older versions of Terraform; not valid for v0.12
example = ["${var.any_list}"]
在terraform 0.12中,像上面这样的表达式现在将生成一个列表
我使用Terraform配置了一个aws_cloudwatch_log_metric_filter:
// Monitor log.error() occurences in each lambda
// A metric filter watches CloudWatch logs and filters them based on patterns and expressions.
resource "aws_cloudwatch_log_metric_filter" "log_errors" {
name = "${local.fullnam
在Terraform配置文件中是否有一些特殊的变量可以指向当前的文件名?
我想将它用于各种资源中的描述字段,这样在系统中看到这些资源的人就会知道它们的主定义在哪里。
例如:
在myinfra.tf中
resource "aws_iam_policy" "my_policy" {
name = "something-important"
description = "Managed by Terraform at ${HERE_I_WOULD_LIKE_TO_USE_THE_VARIABLE}"
poli
我正在我的Linux实例上运行terraform,下面是可怕的部分。
+ /usr/local/bin/terraform workspace new test
enter code here[0m[0m[1m[33mBackend reinitialization required. Please run "terraform init".[0m
[33mReason: Initial configuration of the requested backend "s3"
The "backend" is the interface that