首页 > 解决方案 > 如何从 terraform 运行 ansible 脚本

问题描述

您好,下面是我的要求。使用 terraform 脚本我创建了一个 linux vm 并使用 ansible 剧本发布我安装了一些软件。所以我有这个脚本单独和我一起工作,它工作正常。

我想要做的是,一旦 terraform 脚本创建了 vm,我想从 terraform 脚本调用 ansible 脚本并从 ansible 脚本安装软件。

我尝试了下面的代码,但它没有用

provisioner "remote-exec" {
    inline = ["sudo dnf -y install python"]

    connection {
      type        = "ssh"
      user        = "fedora"
      private_key = "${file(var.ssh_key_private)}"
    }
  }

  provisioner "local-exec" {
    command = "ansible-playbook -u fedora -i '${self.public_ip},' --private-key ${var.ssh_key_private} provision.yml" 
  }

所以在这里我不确定ansible是如何安装在vm中的,目前我是手动安装的,以及如何从terraform调用thisansible脚本

错误:未知的根级别密钥:provisioner

标签: ansibleterraformterraform-provider-azure

解决方案


provisioner只能在 a 中使用resource,例如:

resource "aws_instance" "web" {
  # ...

provisioner "remote-exec" {
    inline = ["sudo dnf -y install python"]

    connection {
      type        = "ssh"
      user        = "fedora"
      private_key = "${file(var.ssh_key_private)}"
    }
  }

  provisioner "local-exec" {
    command = "ansible-playbook -u fedora -i '${self.public_ip},' --private-key ${var.ssh_key_private} provision.yml" 
  }
}


推荐阅读