簡體   English   中英

使用 Terraform 部署 AWS 資源的條件表達式

[英]Conditional expressions with Terraform deploying AWS resources

我當前的 Terraform 設置由 3 個模板文件組成。 每個模板文件都鏈接到一個啟動配置資源,然后用於通過自動縮放事件啟動實例。 在每個模板文件中,都有一個 AWS CLI 命令用於將現有 EBS 卷附加到通過自動擴展啟動的新實例。 我在編寫條件表達式以將變量傳遞給用於附加特定驅動器的此 AWS CLI 命令時遇到了一些問題。 由於我有 3 個模板文件和 3 個 EBS 卷,我希望將其附加到自己的自動縮放組中的每個實例,因此我不相信我的條件表達式中可以有 2 個以上的表達式。 關於我如何實現這一目標的任何建議都會有所幫助。

模板文件

data "template_file" "ML_10_user_data" {
count    = "${(var.enable ? 1 : 0) * var.number_of_zones}" // 3 templates
template = "${file("userdata.sh")}

  vars {
    ebs_volume = "${count.index == 0 ? vol-xxxxxxxxxxxxxxxxx : vol-xxxxxxxxxxxxxxxxx}" // how to include 3rd EBS volume?
  }
}

用戶數據文件

#!/bin/bash
aws ec2 attach-volume --volume-id ${EBS_VOLUME} --instance_id `curl http://169.254.169.254/latest/meta-data/instance-id` --device /dev/sdf

EBS_VOLUME=${ebs_volume}

任何關於我如何完成我想要完成的工作的建議都將不勝感激。

最好的方法是把它放在一個列表中

variable "volumes" {
  default = ["vol-1111","vol-2222","vol-333"]
}

data "template_file" "user_data" {
  count    = "${(var.enable ? 1 : 0) * var.number_of_zones}"
  template = "${file("userdata.sh")}"

  vars {
    ebs_volume = "${var.volumes[count.index]}"
  }
}

但是,如果這些實例應該在 ASG 中,這不是一個很好的設計。 ASG 中的實例應該是相同的、可互換的和一次性的 AWS 或擴展活動可以隨時終止它們,您應該將這些實例視為一個組,而不是單個實體。

使用[和[[

[英]Difference between conditional expressions using [ and [[

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM