Упаковщик — Vsphere-iso — Centos 8

#packer-builder

#упаковщик-конструктор

Вопрос:

Я использую следующие JSON и KS.cfg для создания шаблонов centos 8. Но столкнулся с ошибкой с гибкими дисками (которые я не использую в конфигурации). Пробовал изменить последовательность загрузки, но безуспешно. Также не удалось найти пример для centos 8 Json для vsphere-iso builder. Может ли кто-нибудь помочь мне с этим?

CentOS 8 JSON

 {
  "variables": {
   "vsphere_uid": "Null",
   "vsphere_passwd": "Null",
   "vm_superuser_passwd" : "Null",
   "vsphere_vm_name": "Null",
   "bastion_host": "",
   "bastion_user": "",
   "bastion_password":"Null",
   "datacenter": "",
   "cluster": "",
   "datastore": "",
   "network": "",
   "iso_paths": ""
   },

  "builders": [
    {
      "type": "vsphere-iso",

      "vcenter_server":      "{{user `vsphere_server` }}",
      "username":            "{{user `vsphere_uid` }}",
      "password":            "{{user `vsphere_passwd` }}",
      "insecure_connection": "true",
      "datacenter": "{{user `datacenter` }}",
      "cluster": "{{user `cluster` }}",
      "datastore": "{{user `datastore` }}",
      "network": "{{user `network` }}",
      "vm_name": "{{user `vsphere_vm_name` }}",

      "guest_os_type": "centos7_64Guest",

      "ssh_username": "admin",
      "ssh_password": "{{user `vm_superuser_passwd` }}",
      "ssh_bastion_host": "{{user `bastion_host` }}",
      "ssh_bastion_username": "{{user `bastion_user` }}",
      "ssh_bastion_agent_auth": true,

      "CPUs":             2,
      "RAM":              5120,
      "RAM_reserve_all": false,

      "convert_to_template": true,

      "disk_controller_type":  "pvscsi",
      "disk_size":        102400,
      "disk_thin_provisioned": true,
      "network_card": "vmxnet3",
      "http_directory" :  "httpks",
      "iso_paths": [
        "[nfs] centos/CentOS-8.2.2004-x86_64-minimal.iso"
      ],
      "iso_checksum": "e15fb0e51726de0a4128448b9bd63e7b",
      "iso_checksum_type": "md5",
      "boot_command": "<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg <enter><wait>"
          }
  ]

}
  

Ошибка заключается в :

 dracut-pre-udev{585}: modprobe: FATAL: Module floppy not found in directory /lib/modules/4.18.0-193.2l8.x86_64

— 
2020/09/17 05:17:40 ui: ask: ==> vsphere-iso: Pausing after run of step 'StepConfigParams'. Press enter to continue. 
2020/09/17 05:17:40 packer-builder-vsphere-iso.linux: 
2020/09/17 05:17:40 No floppy files specified. Floppy disk will not be made. 
2020/09/17 05:17:40 ui: ask: ==> vsphere-iso: Pausing after run of step 'StepCreateFloppy'. Press enter to continue. 
2020/09/17 05:17:40 ui: ask: ==> vsphere-iso: Pausing after run of step 'StepAddFloppy'. Press enter to continue.
 — Dracut-initqueue: warning : could not boot Entering Emergency mode. 

  

Пожалуйста, помогите

Ответ №1:

Рабочая альтернатива cdrom с использованием cd_files

https://www.packer.io/docs/builders/vmware/vsphere-iso#cd_files

packer 1.6.6

Соответствующий фрагмент

 ...
"type": "vsphere-iso",
"guest_os_type": "centos8_64Guest",
"cd_files": [
    "{{template_dir}}/ks.cfg",
],
"boot_command": [
    '<up>'
    'e',
    '<down><down><end><wait>',
    ' text ks=cdrom:/dev/sr1:/ks.cfg'
    '<leftCtrlOn>x<leftCtrlOff>',
],
...
  

Ответ №2:

Вы уже узнали, но для тех, кто ищет после факта:

В рулоне ОС больше нет драйвера гибкого устройства, поэтому вам нужно будет использовать другой источник для конфигурации KS. inst.ks использует тот же формат, что и inst.repo, и большинство людей будут использовать HTTP-источник.

Ответ №3:

У меня были похожие проблемы с сборкой vsphere-iso packer с использованием неправильного IP-адреса для каталога HTTP, особенно когда я был подключен к VPN моей компании, а не был подключен. Таким образом, он постоянно зависал в режиме «Ожидание IP» и получал одни и те же ошибки dracut-init. Проблемой для меня был порядок приоритета, который packer использует для определения того, какой интерфейс использовать для каталога HTTP, который содержит мой файл kickstarter.

То, как мы решили эту проблему, заключается в том, что у нас на самом деле есть оболочка-оболочка, которая вызывает packer . В рамках этого скрипта мы запрашиваем у пользователя IP-адрес, по которому следует получить доступ к каталогу HTTP. Я использую ifconfig и смотрю на 10. IP в списке. Сценарий оболочки передает эту переменную среды в сборку моего упаковщика.json — это не самое чистое решение, но я использую это исправление уже несколько месяцев. дайте мне знать, если у вас все еще возникают проблемы, и я смогу опубликовать некоторый код.