ansible - 如何从 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
解决方案
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"
}
}
推荐阅读
- node.js - 如何使用带有回调函数的异步等待
- php - 我无法使用 password_hash 登录
- tensorflow-lite - 将保存的模型转换为 tflite - 'image_tensor' 的形状无效 '[None, None, None, 3]'
- php - 如何将字符作为表达式的结尾
- c++ - 通过线程共享指针的 std::vector
- python - AttributeError:类型对象“UserProfile”没有属性“USERNAME_FIELD”
- python - 用于 lambda 演算的 Python 解析器
- c++ - 无法访问派生类中的基本受保护成员!(在虚函数中)
- javascript - Select2 和 Datetimepicker 在克隆的 div 中不起作用
- c - 在C中使用空格将char转换为int