![](/img/trans.png)
[英]how to create Ansible playbook to obtain OS versions of the remote hosts?
[英]Ansible with Terraform run playbook against one of multiple hosts
我的最終目標是創建一個帶有 terraform 和/或 ansible 的 3 節點 kubeadm kubernetes 集群。 到目前為止,我正在使用 terraform 配置三個相同的實例。 然后使用remote-exec
和inline
安裝所有實例之間共享的包。 現在我只想在這三個實例之一上安裝特定的軟件包。 嘗試使用local-exec
來實現這一點。
我正在努力使用 local-exec 僅連接到 1 個實例。 我知道如何連接到所有這些並針對三個實例執行 playbook。 但最終目標是僅連接到一個實例。
代碼剪斷了:
resource "aws_instance" "r100c96" {
count = 3
ami = "ami-0b9064170e32bde34"
instance_type = "t2.micro"
key_name = local.key_name
tags = {
Name = "terra-ans${count.index}"
}
provisioner "remote-exec" {
connection {
host = "${self.public_ip}"
type = "ssh"
user = local.ssh_user
private_key = file(local.private_key_path)
}
inline = ["sudo hostnamectl set-hostname test"]
}
provisioner "local-exec" {
command = "ansible-playbook -i ${element((aws_instance.r100c96.*.public_ip),0)}, --private-key ${local.private_key_path} helm.yaml"
}
...
}
謝謝,
我認為不是*
使用count.index
,而是在每次loop
運行時傳遞特定的 VM IP。
此外,有多種方法可以使用 Ansible 配置 VM。 考慮是否可以動態構建 Hosts 文件並並行配置它們,而不是一次一個。
一旦aws_instance.r100c96
中的所有三個實例都已配置,您可以使用null_resource並僅對選定的實例運行您的remote-exec
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.