сценарии запуска на облачной платформе Google с использованием Packer

#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 , установленное при создании экземпляра виртуальной машины, не включено в созданный вами образ, поскольку оно было настроено вне среды операционной системы. Чтобы иметь возможность иметь a startup script на вашем новом изображении, вам нужно сначала настроить его внутри ОС, используя задание cron или другой метод. Затем оттуда вы можете создать базовый образ.