#google-cloud-platform #terraform #google-compute-engine #packer
#google-облачная платформа #terraform #google-compute-engine #упаковщик
Вопрос:
Я использую Packer от hashicorp для создания образов компьютеров для облака Google (AMI для Amazon). Я хочу, чтобы каждый экземпляр запускал скрипт после создания экземпляра в облаке. Как я понимаю из документов Packer, я мог бы использовать startup_script_file
для этого. Теперь я получил эту работу, но кажется, что скрипт запускается только один раз при создании изображения, что приводит к одинаковому результату для каждого запущенного экземпляра. Как я могу запустить этот скрипт только при создании экземпляра, чтобы у меня были разные выходные данные для каждого экземпляра?
конфигурация упаковщика:
{
"builders": [{
"type": "googlecompute",
"project_id": "project-id",
"source_image": "debian-9-stretch-v20200805",
"ssh_username": "name",
"zone": "europe-west4-a",
"account_file": "secret-account-file.json",
"startup_script_file": "link to file"
}]
}
сценарий:
#!/bin/bash
echo $((1 RANDOM % 100)) > test.log #output of this remains the same on every created instance.
Комментарии:
1. Я скопировал вашу конфигурацию packer и сценарий запуска на своей стороне, и он отображал разное число каждый раз, когда я собирал новый экземпляр из Packer. Можете ли вы посоветовать, как именно вы создаете виртуальные машины? Какую команду вы используете и сколько виртуальных машин вы создаете?
2. Итак, я создаю машинный образ с помощью Packer один раз. Затем я повторно использую это изображение для создания нескольких экземпляров, что приводит к одинаковому результату для каждого экземпляра. Я не запускаюсь
packer build
для каждого создаваемого мной экземпляра, насколько я понимаю, вы все делаете правильно?3. Спасибо за разъяснение, значение
startup script
, установленное при создании экземпляра виртуальной машины, не включено в созданный вами образ, поскольку оно было настроено вне среды операционной системы. Чтобы иметь возможность иметь astartup script
на вашем новом изображении, вам нужно сначала настроить его внутри ОС, используя задание cron или другой метод. Затем оттуда вы можете создать базовый образ.