好的,所以大部分都是有效的,除了......
我们有一个用户数据模板文件,用于让每个新的 AWS 服务器向 Chef Automate 注册。Chef 通过用户数据脚本中设置的“node_name”引用每个客户端,默认为实例 id。但是在 Chef UI 或“刀节点列表”中查看时,实例 ID 并不完全是用户友好的。我们能够使用模板写出一个有意义的 node_name。就像是:
data "template_file" "user-data-qa" {
count = "${var.QA_numhosts}"
template = "${file("userdata.tpl")}"
vars {
node_name = "${var.customer_name}-QA-${format("%d", count.index + 1)}"
}
}
但是,如果我们重建实例,我们会收到来自 Chef 的错误,因为新实例尝试使用相同的名称注册,但使用新生成的密钥。
因此,我们在 node_name 中添加了一个随机数后缀。我们希望每次重建实例时更新这个随机数。第一次尝试是将实例 ID 设置为随机数的“守护者”。这导致了循环错误:( -> 表示“取决于”)实例 -> 用户数据 -> 随机 -> 实例
还尝试转储随机生成并将实例 ID 的子字符串附加到 node_name。同样的问题,虽然周期更短:实例 -> 用户数据 -> 实例。
有什么想法可以解决这个问题吗?简而言之,我们希望将一个字符串附加到 node_name 中,该字符串将插入到用户数据中,并且每次实例终止并重新启动时该字符串都应该更新。没有来自 Terraform 的循环错误。