2016-02-01 7 views
0

Я начал посещать Terraform, и мне это нравится, поскольку по соображениям затрат у меня есть свои услуги по ряду поставщиков инфраструктуры, поэтому это позволяет легко копировать полные сервисы без проблем у поставщиков IaaS.Terraform с Azure Marketplace

Я использую некоторые сторонние услуги на рынке Azure, аналогичные дополнениям Heroku. Я вижу объект в Terraform для объявлений Add-On Heroku, но не для подписки на рынке Azure. Как я могу это сделать?

Обновление: Как создать заказ или подписку на лазурный рынок через Terraform?

+0

Я не уверен, что понял вопрос, но ... если услуга/изображение не доступны на рынке, это до вас, чтобы вращать его по своему усмотрению (в зависимости от того, способ наиболее подходящий для рассматриваемого инструмента). –

+0

Вопрос: «Как создать заказ/подписку на лазурный рынок через Terraform» – jdotjdot

+0

Как отметил @DavidMakogon, если его нет в Azure Marketplace, вам необходимо создать его самостоятельно. Или попросите Terraform опубликовать что-то на Azure Marketplace, что вы можете использовать. Я также сделал поиск на Azure Marketplace, и, похоже, от них нет предложения. (https://azure.microsoft.com/en-us/marketplace/?term=terraform) –

ответ

0

Если я правильно понимаю ваш преоблем, я думаю, что ключ заключается в создании объявления 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 
} 

Таким образом, полное определение ресурсов VM будет означать что-то вроде этого.

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}" 
} 
} 
Смежные вопросы