Terraform,如何在现有资源上运行配置程序?

2024-01-12

我的问题与这个 github 帖子类似:

https://github.com/hashicorp/terraform/issues/745 https://github.com/hashicorp/terraform/issues/745

这也与我的另一个堆栈交换帖子有关:

Terraform 在尝试获取多个实例的 IP 地址时停滞? https://stackoverflow.com/questions/37823770/terraform-stalls-while-trying-to-get-ip-addresses-of-multiple-instances

我正在尝试引导多个服务器,并且需要在我的实例上运行多个命令,这些命令需要所有其他实例的 IP 地址。但是,在创建新实例之前,我无法访问保存新创建实例的 IP 地址的变量。所以当我尝试运行provisioner "remote-exec"像这样的块:

  provisioner "remote-exec" {
    inline = [
      "sudo apt-get update",
      "sudo apt-get install -y curl",
      "echo ${openstack_compute_instance_v2.consul.0.network.0.fixed_ip_v4}",
      "echo ${openstack_compute_instance_v2.consul.1.network.1.fixed_ip_v4}",
      "echo ${openstack_compute_instance_v2.consul.2.network.2.fixed_ip_v4}"
    ]
  }

什么也没有发生,因为所有实例都在等待所有其他实例完成创建,因此首先什么也没有创建。所以我需要一种方法来创建我的资源,然后运行我的资源provisioner "remote-exec"创建后阻止命令,并且 terraform 可以访问我所有实例的 IP 地址。


解决方案是创建一个resource "null_resource" "nameYouWant" { }然后在其中运行您的命令。它们将在创建初始资源后运行:

resource "aws_instance" "consul" {
  count = 3
  ami = "ami-ce5a9fa3"
  instance_type = "t2.micro"
  key_name = "ansible_aws"
  tags {
    Name = "consul"
  }
}

resource "null_resource" "configure-consul-ips" {
  count = 3

  connection {
    user = "ubuntu"
    private_key="${file("/home/ubuntu/.ssh/id_rsa")}"
    agent = true
    timeout = "3m"
  }

  provisioner "remote-exec" {
    inline = [
      "sudo apt-get update",
      "sudo apt-get install -y curl",
      "sudo echo '${join("\n", aws_instance.consul.*.private_ip)}' > /home/ubuntu/test.txt"
    ]
  }
}

另请参阅此处的答案:

Terraform 在尝试获取多个实例的 IP 地址时停滞? https://stackoverflow.com/questions/37823770/terraform-stalls-while-trying-to-get-ip-addresses-of-multiple-instances

非常感谢@ydaetskcor 的回答

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Terraform,如何在现有资源上运行配置程序? 的相关文章

随机推荐

  • 通过连接查询大型数据集(15+ 百万行)

    我正在尝试连接两个表 products and products markets While products记录不足一百万条 product markets接近2000万条记录 数据已更改 因此架构创建表中可能存在一两个拼写错误 CREA
  • Javascript 日期时间字符串到 Date 对象

    我正在调试一个小型应用程序 其某些功能只能在 Chrome 中运行 问题在于日期选择器 您在其中选择日期和时间 然后日期选择器将其连接到日期时间字符串中 无论如何 字符串看起来像这样 2012 10 20 00 00 然而 现在使用它的 j
  • 为 property = "type.id" 选择什么 @JsonTypeInfo.ID 进行反序列化,JsonTypeInfo.Id.CUSTOM?

    所以我的 JSON 看起来像这样 ActivityDisplayModel name lunch with friends startTime 12 00 00 type id MEAL description Meal complete
  • 将标志传递给 Matlab 函数的最简洁方法是什么?

    我正在设计一个函数 它以一个结构和任意数量的标志作为参数 该函数将包含几个if检查是否设置了特定标志 实现这一目标的最巧妙方法是什么 我正在考虑将标志作为单独的字符串参数传递 有更简洁的解决方案吗 我会像使用那样做varargin and
  • Spring Batch ChunkRequest 抛出 stackOverflow

    我正在挣扎Spring Batch 远程分块使用较新版本的 Spring boot 首先 我尝试将 ChunkRequest 作为事件发送 这是不可能的 因为它没有公共默认构造函数 作为解决方案 我必须创建自定义序列化器和反序列化器 并在
  • Silverlight 4 中的 System.Data.DataTable?

    有谁知道如果系统 数据 数据表Silverlight 4 beta 现在支持吗 过去 我在 ASP NET 和 WinForm 项目中使用它进行数据绑定 其中 UI 和对象需要在运行时构建 如果没有 是否在路线图中 不 这不在 SL4 中
  • 在 React TypeScript 中推断 2 个 props 之间的泛型类型

    我相信这是可能的 但我不太擅长 TS 中的高级输入 还 所以 我想让 React 组件在一个 prop 中接受任何对象形状的数组 然后在不同的 事件函数 prop 中发出相同类型 interface Props data AnyGeneri
  • CGAffineTransform之后转换父/子UIView之间的坐标

    在我开始手工做所有事情之前 我想问一下框架是否可以提供一些帮助 我有一个 UIView 其中包含另一个带有地图的 UIView 父 UIView 包含地图的一些图例 最初我在地图视图中定义一些坐标 例如 100 40 并在父视图中放置一块图
  • Javascript-获取悬停元素的背景颜色

    我目前正在制作一个 google chrome 扩展 并使用此 javascript 动态更改悬停元素的背景颜色 var bindEvent function elem evt cb see if the addEventListener
  • 摄取附件需要更多权限

    我有一个应用程序 当我进行 apt 升级时 它使用elasticsearch Configuring Elasticsearch gt removing ingest attachment gt Downloading ingest att
  • Flutter:如何流式传输由不带 mp3 扩展名的 http url 提供的实时音频

    如何使用 flutter 流式传输由不带 mp3 扩展名的 http url 提供的实时音频 它不是远程文件 但是像网络广播这样的流媒体网址 您可以使用包https pub dev packages url audio stream htt
  • Wi-Fi Direct UWP 超时(HRESULT 异常:0x800705B4)

    我正在使用 UWP API 启动 Wi Fi Direct 接入点服务 开始正常 我在用着WiFiDirectConnectionListener使用以下命令监视连接到接入点的设备ConnectionRequested事件 var conn
  • 如何为 aws gateway API 创建预签名 URL

    我已经看到 S3 对象的预签名 URL 是否可以为 API 网关创建预签名 URL 我已经经历过文档 https docs aws amazon com general latest gr signing aws api requests
  • 类和结构的使用[重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中什么时候应该使用类还是结构 https stackoverflow com questions 54585 when should you use a class vs a struct i
  • CSS 渐变内部渐变

    是否可以使用渐变作为渐变内的颜色之一 出于我的特定目的 我有一个从左到右的初始渐变 linear gradient to right red darkgray 但我希望深灰色部分实际上是从上到下的渐变 linear gradient to
  • 服务器端只进游标破坏@@IDENTITY

    这是一个最小的重现示例 数据库 CREATE TABLE temp x int IDENTITY 1 1 y int 代码 使用VBA和ADO Public Sub repro Dim cn As New Connection Dim rs
  • 请在服务器编辑器中将部署模式更改为分解存档

    我正在尝试在 weblogic10 3 6 应用程序服务器中部署 EAR 我的 Ear 模块包含一个 Web 应用程序模块和一个 jar 模块 当我将 Ear 部署到 weblogic 服务器时 显示错误 D Workspace test
  • 安装 Visual Studio 2013 后出现 Visual Studio 问题

    我有 Windows 8 机器 我的计算机上安装了 Visual Studio 2010 和 Visual Studio 2012 我安装了 Visual Studio 2013 预览版和 8 1 WDK 安装 Visual Studio
  • iOS7 Webview导航栏下初始滚动位置

    我有一个网络视图 它在导航栏下方根据需要滚动 但是 当我第一次加载控制器时 Web 视图中加载的页面会滚动 以便它与导航栏的顶部对齐 当我滚动网页视图时 正确的插图出现在顶部以正确放置 只是初始位置不正确 如何使初始位置完全滚动到顶部 包括
  • Terraform,如何在现有资源上运行配置程序?

    我的问题与这个 github 帖子类似 https github com hashicorp terraform issues 745 https github com hashicorp terraform issues 745 这也与我