Score:0

จะตั้งค่าลอจิกเพื่อสร้างหลายเครื่องบน Azure โดยใช้ Terraform ได้อย่างไร

ธง cn

ด้านล่างนี้คือเทมเพลตที่ฉันมีสำหรับ Azure VM

ใน Google cloud เรามีตัวเลือกในการตั้งค่าจำนวนสำหรับการสร้างหลายเครื่อง ตามที่ได้ยินมา

วิธีสร้างเครื่องหลายเครื่องโดยใช้เทมเพลตเดียว ดังนั้นควรสร้างเครื่องจำนวนมากตามค่าตัวแปร

เทมเพลตตัวอย่างสำหรับ Azure Windows Server VM

URL GitHub: ลิงค์

ฉันต้องการเก็บ repo นี้ไว้แบบสาธารณะอย่างถาวร จึงไม่โพสต์ไฟล์โดยตรงที่นี่

cn flag
เริ่มต้นด้วยการดูเอกสารอย่างเป็นทางการที่ https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs
cn flag
และอ่านเมตาอาร์กิวเมนต์นับได้ที่ https://www.terraform.io/language/meta-arguments/count
Sara June avatar
cn flag
ขอบคุณสำหรับการตอบกลับ เนื่องจากคุณสามารถสังเกตรายละเอียดได้ ตัวเลือกนั้นดูเหมือนจะใช้ได้เฉพาะกับ Google cloud ไม่ใช่สีฟ้า
cn flag
อาร์กิวเมนต์ Meta มีให้สำหรับทุกโมดูล ดังนั้นฉันไม่แน่ใจว่าฉันเข้าใจคุณหรือไม่ มีแม้แต่ตัวอย่างกับ Windows Servers ที่นี่ -> https://buildvirtual.net/terraform-count-examples/ ... คุณต้องแก้ไขคำถามของคุณด้วยตัวอย่างสิ่งที่คุณกำลังทำและข้อผิดพลาดที่คุณพบ
Score:2
ธง jp

วิธีหนึ่งที่คุณสามารถทำได้คือการประกาศคุณสมบัติเป็นตัวแปรและใช้เป็นอาร์กิวเมนต์สำหรับ for_each ภายในข้อกำหนดทรัพยากร

ดูตัวอย่างที่นี่: https://stackoverflow.com/a/64462458/11942781

Score:0
ธง cn

นี่คือตัวอย่างการทำงานคร่าวๆ ของวิธีการใช้เมตาอาร์กิวเมนต์ "count" กับ azurerm_windows_virtual_machine:

ผู้ให้บริการ "azurerm" {
  คุณสมบัติ {}
}
ทรัพยากร "random_string" "ชื่อผู้ใช้" { ความยาว = 8 }
ทรัพยากร "random_password" "รหัสผ่าน" { ความยาว = 24 }

ทรัพยากร "azurerm_resource_group" "rg" {
  name = "นับ-ทดสอบ-ชนะ"
  ที่ตั้ง = "ภาคเหนือ"
}
# กำหนดจำนวนเครื่องเสมือนที่คุณต้องการ
ตัวแปร "vm_count" {
  ค่าเริ่มต้น = 4
}

ทรัพยากร "azurerm_virtual_network" "ทดสอบ" {
  ชื่อ = "ทดสอบเครือข่าย"
  address_space = ["10.0.0.0/16"]
  ตำแหน่ง = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
}

ทรัพยากร "azurerm_subnet" "ทดสอบ" {
  ชื่อ = "ภายใน"
  resource_group_name = azurerm_resource_group.rg.name
  virtual_network_name = azurerm_virtual_network.test.name
  address_prefixes = ["10.0.2.0/24"]
}

ทรัพยากร "azurerm_network_interface" "นิค" {
  นับ = var.vm_count
  ชื่อ = "nic-${count.index}"
  ตำแหน่ง = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name

  ip_configuration {
    ชื่อ = "ภายใน"
    subnet_id = azurerm_subnet.test.id
    private_ip_address_allocation = "ไดนามิก"
  }
}

ทรัพยากร "azurerm_windows_virtual_machine" "vm" {
  นับ = var.vm_count
  ชื่อ = "win-vm-${count.index}"
  resource_group_name = azurerm_resource_group.rg.name
  ตำแหน่ง = azurerm_resource_group.rg.location
  ขนาด = "Standard_F2"
  admin_username = Random_string.username.result
  admin_password = Random_password.password.result
  network_interface_ids = [azurerm_network_interface.nic[count.index].id]

  os_disk {
    แคช = "อ่านเขียน"
    storage_account_type = "Standard_LRS"
  }

  source_image_reference {
    ผู้เผยแพร่ = "MicrosoftWindowsServer"
    ข้อเสนอ = "Windows Server"
    sku = "2016-ศูนย์ข้อมูล"
    รุ่น = "ล่าสุด"
  }
}

แม้ว่าฉันจะแนะนำให้คุณพิจารณาการเขียนโมดูลของคุณเองหรือดูที่การใช้ Virtual Machine Scale Sets และพิจารณาว่ามันเหมาะสมกว่าสำหรับกรณีการใช้งานของคุณหรือไม่ที่ https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/overview

เอกสารประกอบของโมดูล Azurerm ที่เกี่ยวข้องสำหรับเวอร์ชัน Windows สามารถดูได้ที่ https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/windows_virtual_machine_scale_set

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา