簡體   English   中英

Ansible with Terraform 針對多個主機之一運行劇本

[英]Ansible with Terraform run playbook against one of multiple hosts

我的最終目標是創建一個帶有 terraform 和/或 ansible 的 3 節點 kubeadm kubernetes 集群。 到目前為止,我正在使用 terraform 配置三個相同的實例。 然后使用remote-execinline安裝所有實例之間共享的包。 現在我只想在這三個實例之一上安裝特定的軟件包。 嘗試使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM