【问题标题】:Terraform custom provider pass IP to provisionerTerraform 自定义提供程序将 IP 传递给配置程序
【发布时间】:2017-09-22 05:46:57
【问题描述】:

我正在开发一个自定义 Terraform 提供程序,用于管理远程 HyperV 集群上的资源。

创建 VM 资源后,我想调用 remote-exec 配置器。

如何将 host 参数传递给 remote-exec 配置器?

例如,我想用测试的 IP 填充主机值。 (一旦 IP 由 DHCP 提供)

provisioner "hyperv-winrm" {
  vm_name      = "test"

  connection {
    type     = "winrm"
    user     = "Administrator"
    password = "${var.admin_password}"
    host     = "<<IP/DNS GOES HERE>>"
  }
}

【问题讨论】:

  • 您能展示一下您是如何使用 Terraform 创建 VM 的吗? AFAIK Terraform 没有 HyperV 提供程序,所以很高兴看到你在这里做什么。
  • @ydaetskcoR 我正在开发自己的 HyperV 提供程序,现在要回答我自己的问题。谢谢。
  • 好吧,酷。答案几乎可以肯定归结为使用${self.private_ip},但这依赖于将其作为属性导出的资源。

标签: terraform


【解决方案1】:

这就是答案。

来自资源创建函数:(可以更新、删除等)

func resourceVMCreate(d *schema.ResourceData, meta interface{}) error {

    // Create VM
    // Wait for IP

    // Set connection info which will be used by provisioner
    d.SetConnInfo(map[string]string{
        "type": "winrm",
        "host": *vm.IpAddress,
        "user": *vm.UserName,
        "password": *vm.Password
    }

    return err
}

【讨论】:

    猜你喜欢
    • 2021-03-14
    • 2021-09-28
    • 2020-07-08
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2021-05-29
    • 2021-04-02
    相关资源
    最近更新 更多