【问题标题】:How to connect Terraform and Ansible together?如何将 Terraform 和 Ansible 连接在一起?
【发布时间】:2021-05-10 20:54:48
【问题描述】:

我编写了一个 Terraform 脚本来启动 Azure 上的基础架构。我还编写了一个 Ansible 脚本来修补在 Azure 上启动的虚拟机的最新更新。但是,当虚拟机启动后,我无法自动化修补虚拟机的过程。

【问题讨论】:

    标签: azure ansible terraform devops infrastructure-as-code


    【解决方案1】:

    您可以使用 Terraform 中的 Provisioner 在已配置的 VM 上执行 Ansible Playbook。我不确定你的 terraform 版本。但下面的代码可能会有所帮助。请记住,Provisioners 将作为最后的手段使用

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

    https://www.terraform.io/docs/language/resources/provisioners/syntax.html

    【讨论】:

    • ansible-playbook not found 尝试使用 terraform cloud 运行它时,有什么想法吗?
    【解决方案2】:

    要在启动实例时(和/或每次重启时)运行 Ansible 的端到端自动化,您可以从 Terraform 传入 cloud-init 配置。这很好,因为该配置可能引用了您的基础设施的其他部分,这些部分可以通过 Terraform 的依赖解析进行排序。为此,您可以将 Terraform cloudinit_config 提供给 Terraform 中 Azure VM 的 custom_data 参数。

    在 Ansible 方面,您还可以使用 Azure dynamic inventory。使用此动态清单,您可以将标签添加到 Terraform 中的资源,以便在运行 Ansible 时将它们过滤并分组到 Ansible 清单中。如果 Ansible 任务需要从主机收集事实,这将很有帮助。

    【讨论】:

      猜你喜欢
      • 2013-08-01
      • 2022-11-16
      • 2021-08-28
      • 2022-08-14
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多