【发布时间】:2020-12-24 02:47:35
【问题描述】:
我有一个 python 脚本,它为我使用 terraform 创建的每个 AWS EC2 实例生成自定义 cloud-init 脚本。但现在我无法对terraform apply 进行一次调用,因为此时 cloud-init 的文件不存在,并且出现错误。所以现在我正在使用terraform apply -target=null_resource.pynit_lite 来生成文件,然后使用terraform apply 来创建基础架构。
我希望先执行 null_resource,然后执行其余部分,以便在创建 ec2 资源时存在 cloud-init 文件,这样我就可以对 terraform apply 进行一次调用。
我想我需要实现某种“depends_on”,以便 EC2 模块等待 null_resource 完成,但这不是 terraform 中的功能。
我的代码如下所示:
provider "aws" {
region = var.region
profile = var.profile
}
resource "null_resource" "pynit_lite" {
provisioner "local-exec" {
command = "python3 pynit_lite.py"
}
}
data "aws_vpc" "devvpc" {
id = var.vpc_id
}
data "aws_subnet_ids" "devsubs" {
vpc_id = var.vpc_id
}
module "EC2" {
source = "../../../Modules/EC2"
name = var.instanceNames
DSKsize = var.DSKsize
root_volume_size = var.root_volume_size
ami = var.ami
instance_count = length(var.instanceNames)
instance_type = var.instance_type
key_name = var.key_name
ec2_security_group_ids = var.ec2_security_group_ids
script = var.scripts
subnet = var.subnet
vpc = var.vpc_id
}
output "EIP-public" {
value = module.EC2.EIPAddress
}
output "EIP-internal" {
value = module.EC2.InternalIps
}
我看过这个问题,但它没有为此提供解决方案:Unable to make Terraform module dependent on resource
这是非阻塞的,但肯定很烦人,因此我们将不胜感激。
谢谢。
【问题讨论】: