Пакер Ubuntu Server 20.04 запрашивает подтверждение установки, несмотря на указанный autoinstall в boot_command

Вопрос или проблема

Я настраиваю бесконтрольную установку для Ubuntu Server 20.04 с помощью packer. Однако, несмотря на то что я указал autoinstall в boot_command, установщик всегда спрашивает меня о подтверждении (мне нужно вручную ввести “yes” – в середине скриншота):
вставьте описание изображения здесь

Это очевидно подрывает концепцию “бесконтрольной установки”, но я не могу понять, в чем проблема. Я привожу ниже два разных boot_command, которые я использую, и полную конфигурацию в конце поста.

Оба boot-команды приводят к работающей установке, но обе все равно требуют подтверждения. Команда загрузки 1:

boot_command = ["<enter><wait2><enter><wait><f6><esc><wait>", "autoinstall<wait2> ds=nocloud;", "<wait><enter>"]

Команда загрузки 2:

      "boot_command": [
        "<enter><wait2><enter><wait><f6><esc><wait>",
        "linux /casper/vmlinuz autoinstall ds=nocloud;",
        "<wait><enter>",
        "initrd /casper/initrd",
        "<wait><enter>",
        "boot"
      ],

Полная конфигурация:
./ubuntu2004.pkr.hcl:

source "virtualbox-iso" "autogenerated_1" {
  boot_command            = ["<enter><wait2><enter><wait><f6><esc><wait>", "autoinstall<wait2> ds=nocloud;", "<wait><enter>"]
  boot_wait               = "2s"
  cd_files                = ["./http/user-data", "./http/meta-data"]
  cd_label                = "cidata"
  disk_size               = 8192
  guest_additions_path    = "VBoxGuestAdditions_{{ .Version }}.iso"
  guest_os_type           = "Ubuntu_64"
  headless                = false
  http_directory          = "http"
  iso_checksum            = "sha256:f8e3086f3cea0fb3fefb29937ab5ed9d19e767079633960ccb50e76153effc98"
  iso_urls                = ["https://releases.ubuntu.com/focal/ubuntu-20.04.3-live-server-amd64.iso"]
  shutdown_command        = "echo 'ubuntu'|sudo -S shutdown -P now"
  ssh_agent_auth          = true
  ssh_handshake_attempts  = "200"
  ssh_private_key_file    = "/home/asdf/.ssh/virtual_id_ed25519"
  ssh_username            = "vagrant"
  ssh_wait_timeout        = "10000s"
  vboxmanage              = [["modifyvm", "{{ .Name }}", "--memory", "1024"], ["modifyvm", "{{ .Name }}", "--cpus", "1"]]
  virtualbox_version_file = ".vbox_version"
  vm_name                 = "packer-ubuntu-20.04-amd64"
}

build {
  sources = ["source.virtualbox-iso.autogenerated_1"]

  provisioner "shell" {
    scripts = ["scripts/init.sh"]
  }

  provisioner "shell" {
    scripts = ["scripts/cleanup.sh"]
  }

  post-processor "vagrant" {
    compression_level = "8"
    output            = "ubuntu-20.04-test.box"
  }
}

./http/user-data:

#cloud-config
autoinstall:
  version: 1
  locale: en_US
  keyboard:
    layout: en
    variant: us
  network:
    network:
      version: 2
      ethernets:
        enp0s3:
          dhcp4: true
  storage:
    layout:
      name: lvm
  ssh:
    install-server: yes
  user-data:
    users:
      - name: vagrant
        ssh_authorized_keys:
          - ssh-ed25519 REDACTED
        sudo: ALL=(ALL) NOPASSWD:ALL
        groups: [adm, sudo]
        lock_passwd: true
        shell: /bin/bash
  packages:
    - openssh-server
    - build-essential
  late-commands:
    - echo 'vagrant ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/vagrant

У меня была такая же проблема, и я заметил на консоли, что Packer вводил ‘yes’ до того, как установщик был готов (установщик приостановился после 200 секунд, но boot_wait был установлен на 180). Я увеличил значение ‘boot_wait’, чтобы исправить проблему (см. ниже). Также показаны два дополнительных параметра времени ожидания, которые могут (или не могут) потребовать корректировки с вашей стороны:

  • boot_wait = “300s”

  • ip_wait_timeout = “20m”

  • ssh_timeout = “30m”

Ответ или решение

Чтобы решить проблему, когда установка Ubuntu Server 20.04 с использованием Packer запрашивает подтверждение, несмотря на то что вы указали autoinstall в boot_command, нужно учесть несколько аспектов, связанных с таймингами и последовательностью выполнения команд.

Во-первых, отладка проблемы заключается в том, что Packer может пытаться вводить "yes" слишком рано, прежде чем установщик успевает перейти к следующему этапу. Чтобы предотвратить это, необходимо увеличить значение boot_wait. Рассмотрите возможность изменения его следующими значениями:

boot_wait = "300s"

Увеличение boot_wait до 300 секунд позволит убедиться, что Packer ожидает достаточно долго, прежде чем начать вводить команды установки.

Во-вторых, можно также рассмотреть возможность изменения других таймаутов, чтобы мероприятие работало более плавно:

ip_wait_timeout = "20m"
ssh_timeout     = "30m"

Таймауты для выполнения SSH-запросов и ожидания IP-адреса могут быть увеличены, особенно если ваша сеть медленная или настройка занимает больше времени.

Таким образом, ваш полный конфиг будет выглядеть так:

source "virtualbox-iso" "autogenerated_1" {
  boot_command            = [
    "<enter><wait2><enter><wait><f6><esc><wait>",
    "autoinstall<wait2> ds=nocloud;",
    "<wait><enter>"
  ]
  boot_wait               = "300s"  # Увеличено
  cd_files                = ["./http/user-data", "./http/meta-data"]
  cd_label                = "cidata"
  disk_size               = 8192
  guest_additions_path    = "VBoxGuestAdditions_{{ .Version }}.iso"
  guest_os_type           = "Ubuntu_64"
  headless                = false
  http_directory          = "http"
  iso_checksum            = "sha256:f8e3086f3cea0fb3fefb29937ab5ed9d19e767079633960ccb50e76153effc98"
  iso_urls                = ["https://releases.ubuntu.com/focal/ubuntu-20.04.3-live-server-amd64.iso"]
  shutdown_command        = "echo 'ubuntu'|sudo -S shutdown -P now"
  ssh_agent_auth          = true
  ssh_handshake_attempts  = "200"
  ssh_private_key_file    = "/home/asdf/.ssh/virtual_id_ed25519"
  ssh_username            = "vagrant"
  ssh_wait_timeout        = "10000s"
  vboxmanage              = [["modifyvm", "{{ .Name }}", "--memory", "1024"], ["modifyvm", "{{ .Name }}", "--cpus", "1"]]
  virtualbox_version_file = ".vbox_version"
  vm_name                 = "packer-ubuntu-20.04-amd64"
}

build {
  sources = ["source.virtualbox-iso.autogenerated_1"]

  provisioner "shell" {
    scripts = ["scripts/init.sh"]
  }

  provisioner "shell" {
    scripts = ["scripts/cleanup.sh"]
  }

  post-processor "vagrant" {
    compression_level = "8"
    output            = "ubuntu-20.04-test.box"
  }
}

Эти изменения должны устранить необходимость вводить "yes" вручную во время автоматической установки. Убедитесь также, что файл user-data корректно настроен и содержит все необходимые параметры для обработки автоматической установки.

Оцените материал
Добавить комментарий

Капча загружается...