С выпуском Packer 1.6 появилось несколько устаревших полей в сборщике vsphere-iso. Судя по всему, это изменение формата/типа, потому что поля на самом деле все еще существуют, но только как свойства. Примером изменений являются следующие:
Работа в Packer 1.5.6:
JSON
"disk_size": 123456,
"disk_thin_provisioned": true
"network": "VM Network",
"network_card": "vmxnet3"
Работа в Packer 1.6.0:
JSON
"storage": [
{
"disk_size": 123456,
"disk_thin_provisioned": true
}
],
"network_adapters": [
{
"network": "VM Network",
"network_card": "vmxnet3"
}
]
Проблема, с которой я сталкиваюсь на данный момент, заключается в том, что я использую Packer 1.6.0 и пытаюсь преобразовать приведенный выше рабочий код JSON в HCL2. Я не могу понять синтаксис HCL2, который поддерживает изменения, внесенные в Packer 1.6.0.
Я пробовал следующее:
network_adapters = {
network_card = "vmxnet3"
network = "VM Network"
}
Выход:
Аргумент с именем network_adapter здесь не ожидается.
network_adapters = (
network_card = "vmxnet3"
network = "VM Network"
)
Выход:
Ошибка: несбалансированные скобки
в .\Packer\ConfigFileName.pkr.hcl строка 19, в исходном коде vsphere-iso Test: 18: storage = ( 19: disk_thin_provisioned = true
Ожидается, что закрывающая скобка завершит выражение.
network_adapters = [
network_card = "vmxnet3",
network = "VM Network"
]
Выход:
Ошибка: отсутствует разделитель элементов
в .\Packer\ConfigFileName.pkr.hcl строка 19, в исходном коде vsphere-iso Test: 18: storage = [ 19: disk_thin_provisioned = true,
Ожидается запятая для обозначения начала следующего элемента.
Я также пробовал несколько других перестановок с другим синтаксисом коллекций, пока безуспешно. Любые предложения или советы будут очень признательны
network_adapters
былList(Map)
в JSON, поэтому, вероятно, он также должен бытьList(Map)
в HCL. Обратите также внимание на опечатку вs
. - person Matt Schuchard   schedule 06.08.2020