上下文:我正在实现(我的第一个)Terraform 插件/提供程序作为现有公共 API 的包装器。
API 中的创建操作之一指定了一个整数字段,该字段采用正值或-1
作为默认值。如果您-1
在 create API 调用中指定,该值将被服务器端的某个默认值替换(例如field = 1000
),并1000
从现在开始存储。
如果我将其呈现给我的 Terraform 插件 ( terraform apply
):
resource "something" "mysomething" {
name = "someName"
field = -1
}
Run Code Online (Sandbox Code Playgroud)
调用不是幂等的。Terraform 继续看到漂移,随后提供:
# something.mysomething will be updated in-place
~ resource "something" "mysomething" {
id = "165-1567498530352"
name = "someName"
~ field = 1000 -> -1
}
Plan: 0 to add, 1 to change, 0 to destroy.
Run Code Online (Sandbox Code Playgroud)
如何处理这样的API?
我想知道是否有人可以通过 GCP 中存在的数据存储来处理 GCS 上的 Terraform 锁定状态文件,就像在 AWS 中使用 S3 后端和 DynamoDB 表一样。
如果是这样,请举例说明如何操作。
如果我尝试安装压力包,我会发现该包不可用。
sudo yum install stress
Run Code Online (Sandbox Code Playgroud)
实例已连接到互联网,因为我可以成功运行更新。当我尝试自动缩放时,还有其他方法可以做到这一点吗?我有使用 Terraform 设置实例。
我正在尝试使用包装机。
我能够通过以下方式为 ubuntu 16.04 创建图像
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*",
"root-device-type": "ebs"
},
Run Code Online (Sandbox Code Playgroud)
但是当它通过将 16.04 修改为 18.04 来尝试相同的文件管理器时
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "ubuntu/images/*ubuntu-xenial-18.04-amd64-server-*",
"root-device-type": "ebs"
},
Run Code Online (Sandbox Code Playgroud)
我收到以下错误。
==> amazon-ebs: Prevalidating any provided VPC information
==> amazon-ebs: Prevalidating AMI Name: packer-example 1592389575
==> amazon-ebs: No AMI was found matching filters: {
==> amazon-ebs: Filters: [{
==> amazon-ebs: Name: "virtualization-type",
==> amazon-ebs: Values: ["hvm"]
==> amazon-ebs: },{
==> amazon-ebs: Name: "name",
==> amazon-ebs: Values: ["ubuntu/images/*ubuntu-xenial-18.04-amd64-server-*"]
==> …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Terraform 中设置 S3 存储桶策略。我在模块中编写了以下代码core/main.tf
:
resource "aws_s3_bucket_policy" "access_to_bucket" {\n\n bucket = aws_s3_bucket.some_bucket.id\n\n policy = jsonencode({\n Version = "2012-10-17"\n Statement = [\n {\n Action = ["s3:GetObject", "s3:GetObjectAcl", "s3:ListBucket"]\n Effect = "Allow"\n Principal = "${var.some_variable_name}"\n Resource = [\n "${aws_s3_bucket.some_bucket.arn}",\n "${aws_s3_bucket.some_bucket.arn}/*"\n ]\n },\n ]\n })\n}\n\n
Run Code Online (Sandbox Code Playgroud)\n然后在本地模块中实例化,该模块使用 localstack 在本地运行。
\n这是生成的计划:
\nTerraform will perform the following actions:\n\n # module.local.aws_s3_bucket_policy.access_to_bucket will be created\n + resource "aws_s3_bucket_policy" "access_to_bucket" {\n + bucket = "some_bucket"\n + id = (known after apply)\n + policy …
Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services terraform terraform-provider-aws
我正在尝试使用GKE 的 Terraform 模块,但我不确定如何配置属性ip_range_pods
和ip_range_services
.
具体来说,我不确定他们是如何得出这些值的:
ip_range_pods = "us-central1-01-gke-01-pods"
ip_range_services = "us-central1-01-gke-01-services"
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Terraform首次配置Compute Engine实例.
所需的参数之一是使用的图像名称.通过控制台手动配置实例时,我可以看到一个图像列表,但这些是图像的人类可读标签(例如"CentOS 6","Ubuntu 16.04 LTS"等)我试图了解我的位置获取我将在"resource"指令的"boot_disk"部分中使用的实际计算引擎映像名称的列表.
resource "google_compute_instance" "default" {
name = "Test_CE"
machine_type = "n1-standard-1"
zone = "us-east1-b"
boot_disk {
initialize_params {
image = "<actual image name goes here>"
}
}
}
Run Code Online (Sandbox Code Playgroud) 是否可以打开运行时创建的文件terraform plan -out
?
我已经运行terraform plan -out samplefile.txt
并想仔细阅读文件的内容,但我找不到能够打开它的文本编辑器。
不知道是不是字符编码问题。