【发布时间】:2021-05-10 20:54:48
【问题描述】:
我编写了一个 Terraform 脚本来启动 Azure 上的基础架构。我还编写了一个 Ansible 脚本来修补在 Azure 上启动的虚拟机的最新更新。但是,当虚拟机启动后,我无法自动化修补虚拟机的过程。
【问题讨论】:
标签: azure ansible terraform devops infrastructure-as-code
我编写了一个 Terraform 脚本来启动 Azure 上的基础架构。我还编写了一个 Ansible 脚本来修补在 Azure 上启动的虚拟机的最新更新。但是,当虚拟机启动后,我无法自动化修补虚拟机的过程。
【问题讨论】:
标签: azure ansible terraform devops infrastructure-as-code
您可以使用 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 运行它时,有什么想法吗?
要在启动实例时(和/或每次重启时)运行 Ansible 的端到端自动化,您可以从 Terraform 传入 cloud-init 配置。这很好,因为该配置可能引用了您的基础设施的其他部分,这些部分可以通过 Terraform 的依赖解析进行排序。为此,您可以将 Terraform cloudinit_config 提供给 Terraform 中 Azure VM 的 custom_data 参数。
在 Ansible 方面,您还可以使用 Azure dynamic inventory。使用此动态清单,您可以将标签添加到 Terraform 中的资源,以便在运行 Ansible 时将它们过滤并分组到 Ansible 清单中。如果 Ansible 任务需要从主机收集事实,这将很有帮助。
【讨论】: