Создаем файл с расширением .json.
Например, ubuntu16.json:
{
"builders": [ #основные параметры
{
"type": "googlecompute",
"project_id": "infra-5314134",
"image_name": "reddit-base-{{timestamp}}",
"image_family": "reddit-base",
"source_image_family": "ubuntu-1604-lts",
"zone": "europe-west1-b",
"ssh_username": "pawwwel",
"machine_type": "f1-micro"
}
],
"provisioners": [ #запуск дополнительных скриптов
{
"type": "shell",
"script": "scripts/install_ruby.sh",
"execute_command": "echo '1' | sudo -S {{.Path}}"
},
{
"type": "shell",
"script": "scripts/install_mongodb.sh",
"execute_command": "echo '1' | sudo -S {{.Path}}"
}
]
}
Можно проверить правильность синтаксиса командой:
packer validate ubuntu16.json
Запустить:
packer build ubuntu16.json
Если хотим добавить изменяемые параметры:
1. нужно изменить файл
{
"variables": { #добавить параметры
"project_id": null,
"zone": "europe-wes1-b",
"machine_type": "f1-micro",
"source_image": "null"
},
"builders": [
{
"type": "googlecompute",
"project_id": "{{ user `project_id` }}",
"image_name": "reddit-base-{{timestamp}}",
"image_family": "reddit-base",
"source_image_family": "{{ user `source_image` }}",
"zone": "{{ user `zone` }}",
"ssh_username": "pawwwel",
"machine_type": "{{ user `machine_type` }}"
}
],
"provisioners": [
{
"type": "shell",
"script": "scripts/install_ruby.sh",
"execute_command": "echo '1' | sudo -S {{.Path}}"
},
{
"type": "shell",
"script": "scripts/install_mongodb.sh",
"execute_command": "echo '1' | sudo -S {{.Path}}"
}
]
}
2. файл параметров
var.json
{
"project_id": "infra-5314134",
"source_image": "ubuntu-1604-lts"
}
3. запустить команду на выполнение:
packer build -var-file var.json ubuntu16json
Запустить из консоли создание виртуальной машины:
gcloud compute instances create vm001 --zone=europe-west1-b --machine-type=f1-micro --image=reddit-base-1587491511