#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 — это не самое чистое решение, но я использую это исправление уже несколько месяцев. дайте мне знать, если у вас все еще возникают проблемы, и я смогу опубликовать некоторый код.