【问题标题】:How to run ansible script from terraform如何从 terraform 运行 ansible 脚本
【发布时间】:2021-07-11 10:07:58
【问题描述】:

您好,下面是我的要求。 使用 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

【问题讨论】:

  • “它不起作用” - 不具体。为什么它不起作用?有什么错误吗?
  • @Marcin 抱歉忘记提及错误:错误:未知的根级别密钥:供应商
  • 我注意到您有很多带有答案的问题,但没有一个答案被接受。接受好的答案不仅是一种好的做法,而且可以帮助他人并消除重复。如果人们知道您不可能接受好的答案,他们也可能会跳过您的问题。
  • @Marcin 我想当它对我有用时我将其标记为接受

标签: ansible terraform terraform-provider-azure


【解决方案1】:

provisioner 只能在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" 
  }
}

【讨论】:

  • 我们如何在linux VM中安装ansible
  • @ashish 这取决于哪个linux?您必须决定使用哪个 linux,并找到给定发行版的说明。
  • 我正在使用 RHEL 8,但我不确定如何在该 linux vm 中安装 ansible,因为要求是在创建 linux vm 后立即运行 ansible 脚本
  • 或者如果我们安装 phyton 是否足以让 ansible 脚本运行?
  • @ashish 我认为您应该提出有关 RHEL8 和安装 ansible 的专门问题,因为这与您在问题中发布的问题完全不同。
猜你喜欢
  • 2021-10-14
  • 2021-12-12
  • 1970-01-01
  • 2021-09-13
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
相关资源
最近更新 更多