Terraform 如何针对新节点注册领事服务?

Terraform 如何针对新节点注册领事服务?,terraform,Terraform,我正在使用Terraform向Chef提供新节点,并在启动时针对该节点运行一系列食谱。在某些节点上,我希望在它们上注册领事服务。我遇到的问题是,当领事供应器尝试运行时,领事没有运行 我是否正确使用领事供应器?似乎我可以针对现有的领事代理创建服务,但不能针对新的领事代理创建服务。如果我理解正确,您有鸡和蛋的问题,因此这意味着无法在一次申请中完成 您必须创建两个地形状态(目录) 在第一个示例中,您使用适当的terraform输出创建服务器,并配置远程状态(如果您在AWS中,S3是一个不错的选择,如果

我正在使用Terraform向Chef提供新节点,并在启动时针对该节点运行一系列食谱。在某些节点上,我希望在它们上注册领事服务。我遇到的问题是,当领事供应器尝试运行时,领事没有运行


我是否正确使用领事供应器?似乎我可以针对现有的领事代理创建服务,但不能针对新的领事代理创建服务。

如果我理解正确,您有鸡和蛋的问题,因此这意味着无法在一次申请中完成

您必须创建两个地形状态(目录)

在第一个示例中,您使用适当的terraform输出创建服务器,并配置远程状态(如果您在AWS中,S3是一个不错的选择,如果您已经有另一个Concur群集,则可以使用Concur后端)

在第二个示例中,您使用远程状态来检索输出(我在这里使用concur作为后端,但您可以使用另一个)

然后应用第一种状态,当实例正确部署时,可以应用第二种状态

参考:


哇。。。我不知道这件事。让我在未来几天内试一试。谢谢我想我的下一个问题是,为什么会有这样一家领事馆?除非我没有充分考虑这一点,但如果要在新节点上注册服务,则在consur完全在节点上运行之前,没有办法做到这一点。
resource "aws_instance" "instance" {
  ami           = "ami-eed00d97"
  instance_type = "t2.micro"
}

output "service" { value = "awesome_service"}
data "terraform_remote_state" "instance" {
  backend = "consul"
  config {
    path = "terraform/services"
  }
}

resource "consul_keys" "service" {
  key {
    name    = "${data.terraform_remote_state.instance.service}"
    path    = "service/awesome"
    default = "url"
  }
}