configuration - 模块实例依赖于 Terraform 中相同模块的另一个实例
问题描述
我试图找出一种方法,使模块的一个实例依赖于同一模块的另一个实例的成功部署。不幸的是,尽管资源支持它,模块似乎不支持显式depends_on
开关:
➜ db_terraform git:(master) ✗ terraform 计划
错误:模块“slave”:“depends_on”不是有效参数
我在根模块中有这些:main.tf
module "master" {
source = "./modules/database"
cluster_role = "master"
..
server_count = 1
}
module "slave" {
source = "./modules/database"
cluster_role = "slave"
..
server_count = 3
}
resource "aws_route53_record" "db_master" {
zone_id = "<PRIVZONE>"
name = "master.example.com"
records = ["${module.master.instance_private_ip}"]
type = "A"
ttl = "300"
}
我想先部署master。我要做的是启动两个安装了数据库产品的 AWS 实例。一旦 master 出现,它的 IP 将用于创建 DNS 记录。完成此操作后,将创建从属服务器并将使用该 IP 将主服务器“登记”为集群的一部分。如何防止奴隶与主人同时出现?我试图避免从站无法与主站连接,因为在从站准备好时可能尚未创建数据库记录。
我已经阅读了在这种情况下使用 a 的建议null_resource
,但我不清楚应该如何使用它来解决我的问题。
Fwiw,这是模块中 main.tf 的内容。
resource "aws_instance" "database" {
ami = "${data.aws_ami.amazonlinux_legacy.id}"
instance_type = "t2.xlarge"
user_data = "${data.template_file.db_init.rendered}"
count = "${var.server_count}"
}
提前感谢您的任何答案。
解决方案
推荐阅读
- sql - 创建序列表(整数和日期)
- javascript - 在数组中添加中断
- python - 遗漏测试
- linux - 使用误差线绘制数据并使用 gnuplot 对其进行排序
- tensorflow - tensorflow tf.metrics.mean_absolute_error 返回不同的值?
- react-native - 使用 react-navigation 3.* 如何从屏幕导航到同一级别的 BottomTabNavigator?
- pandas - 删除Python中数字列表中的最后一个标点符号
- react-native - 在邮递员中正常工作时在本机反应中获取 api 的问题
- oop - 隐藏字段时如何避免instanceof
- java - 使用 JAX-RS 同时使用 Text/plain 和 Application/json?