2016-02-01 31 views
0

我已經開始進入Terraform和我熱愛它,因爲出於成本原因,我遇到了許多基礎設施供應商有我的服務,所以它可以很容易地複製完整的服務,而不需要通過IaaS提供商的問題。Terraform與Azure的市場

我通過Azure的市場,類似於Heroku的附加組件使用一些第三方服務。我在Terraform中看到了一個Heroku附加組件聲明的工具,但不適用於Azure市場訂閱。我怎樣才能做到這一點?

更新: 如何通過Terraform創建Azure市場訂單/訂購?

+0

我不知道我理解的問題,但是...如果服務/圖片不能在市場上,這是由你來旋轉它,你自己(在無論怎樣最適用於所討論的工具)。 –

+0

問題是「如何通過Terraform創建Azure市場訂單/訂閱」 – jdotjdot

+0

正如@DavidMakogon提到的,如果它不在Azure市場中,您必須自己創建。或者讓Terraform向Azure Marketplace發佈您可以使用的東西。我還在Azure Marketplace上進行了一次搜索,似乎沒有任何提供。 (https://azure.microsoft.com/en-us/marketplace/?term=terraform) –

回答

0

如果我正確理解你的preoblem我認爲關鍵是要建立與佔位符代替下面的章節聲明VM;

plan { 
    publisher = "${publisher}" // e.g. bitnami 
    product = "${offer}" // e.g. elk 
    name = "${sku}" // e.g. 46 
} 

storage_image_reference { 
    publisher = "${publisher}" // e.g. bitnami 
    offer = "${offer}" // e.g. elk 
    sku = "${sku}" // e.g. 46 
    version = "${version}" // e.g. latest 
} 

因此,一個完整的虛擬機資源定義會像這樣。

resource "azurerm_virtual_machine" "virtual_machine" { 
    count = "${var.vm_count}" 
    name = "${element(module.template.vm_names, count.index)}" 
    location = "${var.location}" 
    resource_group_name = "${var.resource_group_name}" 
    network_interface_ids = ["${element(azurerm_network_interface.network_interface.*.id, count.index)}"] 
    vm_size = "${var.vm_size}" 
    delete_data_disks_on_termination = true 
    delete_os_disk_on_termination = true 

plan { 
    publisher = "${var.publisher}" 
    product = "${var.offer}" 
    name = "${var.sku}" 
} 

boot_diagnostics { 
    enabled = true 
    storage_uri = "${var.boot_diagnostics_storage_url}" 
} 

storage_image_reference { 
    publisher = "${var.publisher}" 
    offer = "${var.offer}" 
    sku = "${var.sku}" 
    version = "${var.version}" 
} 

storage_os_disk { 
    name = "primarydisk" 
    vhd_uri = "${join("", list(var.disks_container_url, "/" , element(module.template.vm_names, count.index), ".vhd"))}" 
    caching = "ReadWrite" 
    create_option = "FromImage" 
} 

os_profile { 
    computer_name = "${element(module.template.vm_names, count.index)}" 
    admin_username = "${element(module.template.user_names, count.index)}" 
} 

os_profile_linux_config { 
    disable_password_authentication = true 
    ssh_keys = [{ 
     path  = "/home/${element(module.template.user_names, count.index)}/.ssh/authorized_keys" 
     key_data = "${replace(file("../vars/keys/vm.pub"),"\n","")}" 
    }] 
} 

tags { 
    environment = "${var.resource_group_name}" 
} 
}