terraform导入:如何避免在自动脚本中重新导入时出错
目标:terraform导入:如何避免在自动脚本中重新导入时出错,terraform,terraform-provider-gcp,Terraform,Terraform Provider Gcp,目标: 在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
为了具体解决这个问题,可以在导入之前添加一个
地形状态rm
,后跟对象id
有关地形状态rm的信息,请参阅
取决于您如何处理可能工作的自动化。以下是我最后要做的
terraforminit
地形状态列表
静态_IP_NAME=“IP基础”
地形状态rm“谷歌计算地址${STATIC\u IP\u NAME}”
terraform导入-var file=“main.tfvars”谷歌计算地址。${STATIC\u IP\u NAME}${STATIC\u IP\u NAME}
阅读-s-n 1-p“按任意键继续…”
地形平面图-var file=“main.tfvars”-out plan.out
#echo-ne'\007'
阅读-s-n 1-p“按任意键应用..按Ctrl C中止”
回声“”
地形应用平面图
#echo-ne'\007'
然后在我的根main.tf中,我将地址定义为prevent\u destroy=true
main.tf
resource "google_compute_address" "ip-base" { # see terraform import in deploy.sh
name = "ip-base"
lifecycle {
prevent_destroy = true #DO NOT DELETE STATIC-IP
}
}
# Call vm_micro
module "vm-base" {
source = "./_module-vm-micro"
vm_instance_name = "base"
custom_static_ip = google_compute_address.ip-base.address
#from predefined
#CPU/RAM
vm_size = var.org_micro
#where
deploy_env = var.deploy_env
zone = var.zone
#disk
boot_image = var.disk_image_coscloud
disk_type = var.disk_hdd
disk_size = var.disk_20_gb
#login
login_key_file = var.ssh_pubkey_file
login_user = var.ssh_username
}
另一种选择:
也许我也可以省钱,不使用静态ip。相反,在boot-startupscript.sh中,我可以进行动态DNS api调用,将动态api更新为DNS。我必须对此进行实验,希望有一些示例代码
为什么要重复导入同一资源?这无助于实现我的目标。编辑我的问题以进一步澄清。好的,您可以分享您当前的顺序吗?似乎您应该能够通过从状态文件中删除资源,然后销毁,然后再将其添加回来来实现您想要的。我们实现这一点的方法是在不同的目录中隔离IP地址管理。您将在单独的tf中创建一次,然后让您的模块每次引用该资源,并且不再接触它。