
문제:
Packer를 사용하여 Ubuntu Server 22.04 이미지를 생성하려고 하는데 유효한 netplan 구성을 사용하여 NIC 이름을 바꾼 다음 하나의 패키지를 설치할 때 문제가 발생합니다.
배경에 관해 참고할 몇 가지 사항은 다음과 같습니다.
- cloud-init와 함께 proxmox를 사용하여 시작 시 NIC 구성을 설정하기 위해 terraform을 사용하려고 하기 때문에 NIC의 이름을 바꾸고 있습니다. cloud-init가 복제된 이미지에서 실행되면 첫 번째 부팅 시 NIC의 이름을 바꾸려고 하는 것처럼 보이며 즉시 NIC의 이름(ens18에서 eth0으로)을 바꿀 수 없기 때문에 cloud-init가 적절한 IP 주소를 설정하기 전에 두 번째 재부팅이 필요합니다. VM에서. 수동 재부팅이 필요하기 때문에 Terraform을 사용하여 우분투 서버를 가동하려는 경우 이는 이상적이지 않습니다.
다음 OS에 제공되는 Proxmox 및 cloud-init 드라이브/구성 설정에는 문제가 없습니다.
- AlmaLinux 8 & 9
- RHEL 7, 8, 9
- Windows Server 2012, 2016, 2019 및 2022(Cloudbase-init)
그들은 모두 Terraform이 사용하기 위해 Proxmox로 보내는 cloud-init 구성을 수락하는 것처럼 보이며 모든 것이 좋습니다. 이 모든 것은 proxmox가 NIC의 이름을 바꾸면 안 된다는 뜻이지만 Ubuntu Server는 제가 이 문제를 겪은 첫 번째 OS이고 현재 Ubuntu 이외의 다른 곳에서는 솔루션을 찾고 있지 않습니다.
qemu-guest-agent
Packer가 Proxmox API의 IP 주소를 읽어서 연결할 대상을 알 수 있도록 VM에 설치해야 합니다 .
세부사항:
qemu-guest-agent
네트워크 설정을 지정하지 않고 subiquity/netplan이 기본값을 제공하도록 하면 설치할 수 있습니다 . 이 작업을 수행하면 성공적인 자동 설치에autoinstall-user-data
있는 최종 파일/var/log/installer
에 다음과 같은 네트워크 및 패키지 구성이 표시됩니다.
autoinstall:
<snipped>
network:
ethernets:
ens18:
dhcp4: true
version: 2
packages:
- qemu-guest-agent
<snipped>
- subiquity/netplan을 사용하여 NIC의 이름을 성공적으로 바꿀 수 있습니다. 이 작업이 완료되면 qemu-guest-agent 설치에 실패하고 빌드 프로세스가 실패합니다. 이를 위해 내가 사용하는 구성은 다음과 같습니다.
network:
ethernets:
ens18:
match:
driver: e1000
dhcp4: true
set-name: eth0
version: 2
packages:
- qemu-guest-agent
위 network:
블록은 NIC의 이름을 eth0으로 성공적으로 바꾸었으며 손상된 설치에 전체 네트워킹이 있습니다. google.com과 같은 항목을 핑할 수 있고 시스템에 SSH로 연결할 수도 있습니다. 로그에서 이름 변경이 성공했음을 확인할 수 있으며, 셸에 팝업되면 실패한 설치에서 새 NIC 이름을 확인할 수 있습니다.
다음은 NIC 이름 변경 후 발생하는 오류입니다.
에서 subiquity-server-debug.log.1976
:
2022-09-04 07:21:30,557 DEBUG root:39 start: subiquity/Install/install/postinstall/install_qemu-guest-agent: installing qemu-guest-agent
2022-09-04 07:21:30,560 DEBUG subiquitycore.utils:112 astart_command called: ['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1976', '--setenv', 'PATH=/snap/subiquity/3698/bin:/snap/subiquity/3698/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/3698/bin', '--setenv', 'PYTHONPATH=:/snap/subiquity/3698/lib/python3.8/site-packages', '--setenv', 'PYTHON=/snap/subiquity/3698/usr/bin/python3.8', '--setenv', 'SNAP=/snap/subiquity/3698', '--', '/snap/subiquity/3698/usr/bin/python3.8', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1976.5"}}', 'system-install', '-t', '/target', '--', 'qemu-guest-agent']
2022-09-04 07:21:30,570 INFO root:39 start: subiquity/Meta/status_GET:
2022-09-04 07:21:31,706 DEBUG root:39 start: subiquity/Install/install/postinstall/install_qemu-guest-agent/cmd-system-install: curtin command system-install
2022-09-04 07:21:31,826 ERROR root:39 finish: subiquity/Install/install/postinstall/install_qemu-guest-agent: FAIL: Command '['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1976', '--setenv', 'PATH=/snap/subiquity/3698/bin:/snap/subiquity/3698/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/3698/bin', '--setenv', 'PYTHONPATH=:/snap/subiquity/3698/lib/python3.8/site-packages', '--setenv', 'PYTHON=/snap/subiquity/3698/usr/bin/python3.8', '--setenv', 'SNAP=/snap/subiquity/3698', '--', '/snap/subiquity/3698/usr/bin/python3.8', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1976.5"}}', 'system-install', '-t', '/target', '--', 'qemu-guest-agent']' returned non-zero exit status 100.
2022-09-04 07:21:31,833 ERROR root:39 finish: subiquity/Install/install/postinstall: FAIL: Command '['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1976', '--setenv', 'PATH=/snap/subiquity/3698/bin:/snap/subiquity/3698/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/3698/bin', '--setenv', 'PYTHONPATH=:/snap/subiquity/3698/lib/python3.8/site-packages', '--setenv', 'PYTHON=/snap/subiquity/3698/usr/bin/python3.8', '--setenv', 'SNAP=/snap/subiquity/3698', '--', '/snap/subiquity/3698/usr/bin/python3.8', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1976.5"}}', 'system-install', '-t', '/target', '--', 'qemu-guest-agent']' returned non-zero exit status 100.
2022-09-04 07:21:31,834 DEBUG subiquitycore.common.errorreport:384 generating crash report
2022-09-04 07:21:31,872 INFO subiquitycore.common.errorreport:406 saving crash report 'install failed crashed with CalledProcessError' to /var/crash/1662276091.834314585.install_fail.crash
2022-09-04 07:21:31,873 ERROR root:39 finish: subiquity/Install/install: FAIL: Command '['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1976', '--setenv', 'PATH=/snap/subiquity/3698/bin:/snap/subiquity/3698/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/3698/bin', '--setenv', 'PYTHONPATH=:/snap/subiquity/3698/lib/python3.8/site-packages', '--setenv', 'PYTHON=/snap/subiquity/3698/usr/bin/python3.8', '--setenv', 'SNAP=/snap/subiquity/3698', '--', '/snap/subiquity/3698/usr/bin/python3.8', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1976.5"}}', 'system-install', '-t', '/target', '--', 'qemu-guest-agent']' returned non-zero exit status 100.
2022-09-04 07:21:31,875 INFO root:39 start: subiquity/ErrorReporter/1662276091.834314585.install_fail/add_info:
2022-09-04 07:21:31,876 ERROR subiquity.server.server:416 top level error
Traceback (most recent call last):
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/controllers/cmdlist.py", line 104, in _run
await Install.install_task
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquitycore/context.py", line 148, in decorated_async
return await meth(self, **kw)
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/controllers/install.py", line 177, in install
await self.postinstall(context=context)
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquitycore/context.py", line 148, in decorated_async
return await meth(self, **kw)
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/controllers/install.py", line 200, in postinstall
await self.install_package(context=context, package=package)
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquitycore/context.py", line 148, in decorated_async
return await meth(self, **kw)
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/controllers/install.py", line 227, in install_package
await run_curtin_command(
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/curtin.py", line 181, in run_curtin_command
return await cmd.wait()
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/curtin.py", line 118, in wait
result = await self.runner.wait(self.proc)
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/runner.py", line 81, in wait
raise subprocess.CalledProcessError(proc.returncode, proc.args)
subprocess.CalledProcessError: Command '['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1976', '--setenv', 'PATH=/snap/subiquity/3698/bin:/snap/subiquity/3698/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/3698/bin', '--setenv', 'PYTHONPATH=:/snap/subiquity/3698/lib/python3.8/site-packages', '--setenv', 'PYTHON=/snap/subiquity/3698/usr/bin/python3.8', '--setenv', 'SNAP=/snap/subiquity/3698', '--', '/snap/subiquity/3698/usr/bin/python3.8', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1976.5"}}', 'system-install', '-t', '/target', '--', 'qemu-guest-agent']' returned non-zero exit status 100.
2022-09-04 07:21:31,877 ERROR subiquity.server.server:416 top level error
Traceback (most recent call last):
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/controllers/shutdown.py", line 77, in _wait_install
await self.app.controllers.Install.install_task
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/controllers/cmdlist.py", line 104, in _run
await Install.install_task
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquitycore/context.py", line 148, in decorated_async
return await meth(self, **kw)
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/controllers/install.py", line 177, in install
await self.postinstall(context=context)
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquitycore/context.py", line 148, in decorated_async
return await meth(self, **kw)
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/controllers/install.py", line 200, in postinstall
await self.install_package(context=context, package=package)
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquitycore/context.py", line 148, in decorated_async
return await meth(self, **kw)
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/controllers/install.py", line 227, in install_package
await run_curtin_command(
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/curtin.py", line 181, in run_curtin_command
return await cmd.wait()
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/curtin.py", line 118, in wait
result = await self.runner.wait(self.proc)
File "/snap/subiquity/3698/lib/python3.8/site-packages/subiquity/server/runner.py", line 81, in wait
raise subprocess.CalledProcessError(proc.returncode, proc.args)
subprocess.CalledProcessError: Command '['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1976', '--setenv', 'PATH=/snap/subiquity/3698/bin:/snap/subiquity/3698/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/3698/bin', '--setenv', 'PYTHONPATH=:/snap/subiquity/3698/lib/python3.8/site-packages', '--setenv', 'PYTHON=/snap/subiquity/3698/usr/bin/python3.8', '--setenv', 'SNAP=/snap/subiquity/3698', '--', '/snap/subiquity/3698/usr/bin/python3.8', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1976.5"}}', 'system-install', '-t', '/target', '--', 'qemu-guest-agent']' returned non-zero exit status 100.
2022-09-04 07:21:32,072 ERROR root:39 finish: subiquity/Install/install/postinstall/install_qemu-guest-agent/cmd-system-install: FAIL: curtin command system-install
2022-09-04 07:21:32,594 INFO root:39 finish: subiquity/ErrorReporter/1662276091.834314585.install_fail/add_info: SUCCESS: written to /var/crash/1662276091.834314585.install_fail.crash
2022-09-04 07:21:32,596 INFO root:39 finish: subiquity/Meta/status_GET: SUCCESS: 200 {"state": "ERROR", "confirming_tty": "", "error": {"state": "DONE", "base": "...
2022-09-04 07:21:32,599 INFO aiohttp.access:233 [04/Sep/2022:07:21:30 +0000] "GET /meta/status?cur=%22POST_RUNNING%22 HTTP/1.1" 200 524 "-" "Python/3.8 aiohttp/3.6.2"
실패한 로그에서 명령을 수동으로 실행하는 경우:
systemd-run --wait --same-dir --property SyslogIdentifier=subiquity_log.1976 --setenv PATH=/snap/subiquity/3698/bin:/snap/subiquity/3698/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/3698/bin --setenv PYTHONPATH=:/snap/subiquity/3698/lib/python3.8/site-packages --setenv PYTHON=/snap/subiquity/3698/usr/bin/python3.8 --setenv SNAP=/snap/subiquity/3698 -- /snap/subiquity/3698/usr/bin/python3.8 -m curtin --showtrace -vvvvvv --set json:reporting='{"subiquity": {"type": "journald", "identifier": "curtin_event.1976.5"}}' system-install -t /target -- qemu-guest-agent
syslog에서 다음을 볼 수 있습니다.
Sep 4 07:31:18 ubuntu-server systemd[1]: Started /snap/subiquity/3698/usr/bin/python3.8 -m curtin --showtrace -vvvvvv --set json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1976.5"}} system-install -t /target -- qemu-guest-agent.
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: start: cmd-system-install: curtin command system-install
Sep 4 07:31:19 ubuntu-server curtin_event.1976.5[16331]: start: cmd-system-install: curtin command system-install
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['mount', '--bind', '/dev', '/target/dev'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['mount', '--bind', '/proc', '/target/proc'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['mount', '--bind', '/run', '/target/run'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['mount', '--bind', '/sys', '/target/sys'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['unshare', '--help'] with allowed return codes [0] (capture=True)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['unshare', '--fork', '--pid', '--', 'chroot', '/target', 'eatmydata', 'apt-get', '--quiet', '--assume-yes', '--option=Dpkg::options::=--force-unsafe-io', '--option=Dpkg::Options::=--force-confold', 'install', 'qemu-guest-agent'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16342]: Reading package lists...
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16342]: Building dependency tree...
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16342]: Reading state information...
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16342]: E: Unable to locate package qemu-guest-agent
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['udevadm', 'settle'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: TIMED subp(['udevadm', 'settle']): 0.028
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['mount', '--make-private', '/target/sys'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['umount', '/target/sys'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['mount', '--make-private', '/target/run'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server systemd[1]: target-sys.mount: Deactivated successfully.
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['umount', '/target/run'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['mount', '--make-private', '/target/proc'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['umount', '/target/proc'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['mount', '--make-private', '/target/dev'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Running command ['umount', '/target/dev'] with allowed return codes [0] (capture=False)
Sep 4 07:31:19 ubuntu-server subiquity_event.1976[1976]: subiquity/Install/install/postinstall/install_qemu-guest-agent/cmd-system-install: curtin command system-install
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: system install failed for ['qemu-guest-agent']: Unexpected error while running command.
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Command: ['unshare', '--fork', '--pid', '--', 'chroot', '/target', 'eatmydata', 'apt-get', '--quiet', '--assume-yes', '--option=Dpkg::options::=--force-unsafe-io', '--option=Dpkg::Options::=--force-confold', 'install', 'qemu-guest-agent']
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Exit code: 100
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Reason: -
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Stdout: ''
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: Stderr: ''
Sep 4 07:31:19 ubuntu-server subiquity_log.1976[16331]: finish: cmd-system-install: FAIL: curtin command system-install
Sep 4 07:31:19 ubuntu-server curtin_event.1976.5[16331]: finish: cmd-system-install: FAIL: curtin command system-install
Sep 4 07:31:19 ubuntu-server systemd[1]: run-u70.service: Main process exited, code=exited, status=100/n/a
Sep 4 07:31:19 ubuntu-server systemd[1]: run-u70.service: Failed with result 'exit-code'.
Sep 4 07:31:19 ubuntu-server systemd[1]: run-u70.service: Consumed 1.595s CPU time.
Sep 4 07:31:20 ubuntu-server subiquity_event.1976[1976]: subiquity/Install/install/postinstall/install_qemu-guest-agent/cmd-system-install: curtin command system-install
Sep 4 07:31:20 ubuntu-server systemd[1]: target-run.mount: Deactivated successfully.
Sep 4 07:31:20 ubuntu-server systemd[1]: target-proc.mount: Deactivated successfully.
Sep 4 07:31:20 ubuntu-server systemd[1]: target-dev.mount: Deactivated successfully.
NIC 이름을 바꾸지 않고 자동 설치에서 실행하면 이와 동일한 단계/구성이 성공합니다.
2022-09-01 23:11:45,679 DEBUG root:39 start: subiquity/Install/install/postinstall/install_qemu-guest-agent: installing qemu-guest-agent
2022-09-01 23:11:45,988 DEBUG subiquitycore.utils:112 astart_command called: ['systemd-run', '--wait', '--same-dir', '--property', 'SyslogIdentifier=subiquity_log.1972', '--setenv', 'PATH=/snap/subiquity/3698/bin:/snap/subiquity/3698/usr/bin:/usr/local/s
bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/subiquity/3698/bin', '--setenv', 'PYTHONPATH=:/snap/subiquity/3698/lib/python3.8/site-packages', '--setenv', 'PYTHON=/snap/subiquity/3698/usr/bin/python3.8', '--
setenv', 'SNAP=/snap/subiquity/3698', '--', '/snap/subiquity/3698/usr/bin/python3.8', '-m', 'curtin', '--showtrace', '-vvv', '--set', 'json:reporting={"subiquity": {"type": "journald", "identifier": "curtin_event.1972.5"}}', 'system-install', '-t', '/tar
get', '--', 'qemu-guest-agent']
2022-09-01 23:11:46,031 INFO root:39 start: subiquity/Meta/status_GET:
2022-09-01 23:11:47,706 DEBUG root:39 start: subiquity/Install/install/postinstall/install_qemu-guest-agent/cmd-system-install: curtin command system-install
2022-09-01 23:11:56,394 DEBUG subiquity.server.curtin:123 waited 0.1 seconds for events to drain
2022-09-01 23:11:56,458 DEBUG root:39 finish: subiquity/Install/install/postinstall/install_qemu-guest-agent/cmd-system-install: SUCCESS: curtin command system-install
2022-09-01 23:11:56,496 DEBUG subiquity.server.curtin:123 waited 0.2 seconds for events to drain
2022-09-01 23:11:56,497 DEBUG root:39 finish: subiquity/Install/install/postinstall/install_qemu-guest-agent: SUCCESS: installing qemu-guest-agent
이 시점에서는 NIC 이름이 변경된 후 패키지를 찾을 수 없다는 메시지가 표시되는 이유를 잘 모르겠습니다. 셸이 표시된 후 VM이 완전한 인터넷 액세스 권한을 갖기 때문에 이 시점에서는 약간 당황스럽습니다.
어떤 종류의 도움/문제 해결 단계라도 환영합니다. 가능한 모든 정보를 제공해 드리겠습니다.
답변1
을 사용하여 네트워킹을 구성하고 싶습니다 late-commands
.
#cloud-config
autoinstall:
late-commands:
- |
rm /target/etc/netplan/00-installer-config.yaml
cat <<EOF > /target/etc/netplan/80-my.yaml
network:
ethernets:
ens18:
match:
driver: e1000
dhcp4: true
set-name: eth0
version: 2
EOF
어떻게 작동하나요?
network
파일 에 구성 블록이 없으면 user-data
설치 프로그램(잠재성) 할 것이다일반 netplan 구성을 사용하십시오. 나중에,잠재성설치된 시스템에 대한 netplan 구성을 생성하고 설치 프로그램 환경에도 사용합니다. 에서 late-commands
삭제할 수 있습니다잠재성생성된 구성을 원하는 대로 바꾸세요. 이는 설치된 시스템에만 영향을 미칩니다.
연결
답변2
비슷한 문제가 발생할 수 있는 다른 사람들을 위해 더 많은 정보를 추가하고 싶었습니다. 이제 문제를 해결하고 무엇이 잘못되었는지 알았으므로 일부 영역에서 내 기본 게시물이 올바르지 않습니다.
먼저 Andrew의 답변으로 게시물에서 요청한 문제가 해결될 것입니다. 그러나 나는 그의 게시물의 도움으로 내 cloud-init이 시작되지 않는 이유를 알아냈습니다.
원래 보고 있던 cloud-init 로그의 내용으로 인해 NIC의 이름을 cloud-init로 바꿀 수 없다고 생각하게 되었고, 이것이 바로 NIC의 이름을 바꾸려고 하다가 이러한 모든 문제에 부딪힌 이유입니다. 그러나 이것은 잘못된 것입니다.
Andrew의 구성으로 클론을 부팅하고 NIC의 이름이 변경된 후에는 연속 재부팅 후에도 항상 DHCP 구성을 가져오고 있다는 것을 깨달았습니다. 좀 더 자세히 살펴본 후 나는 cloud-init가 netplan과 상호 작용한다는 것을 깨달았습니다(이것이 내가 나열한 다른 모든 OS와 다른 이유입니다).
어떤 경우에는 netplan과 상호 작용하는 cloud-init에서 이런 일이 발생하는 것을 발견했습니다.
Sep 6 00:23:13 ubuntu22 cloud-init[773]: 2022-09-06 00:23:08,634 - util.py[DEBUG]: Writing to /etc/netplan/50-cloud-init.yaml - wb: [644] 695 bytes
Sep 6 00:23:13 ubuntu22 cloud-init[773]: 2022-09-06 00:23:08,636 - subp.py[DEBUG]: Running command ['netplan', 'generate'] with allowed return codes [0] (shell=False, capture=True)
Sep 6 00:23:13 ubuntu22 cloud-init[773]: 2022-09-06 00:23:09,030 - subp.py[DEBUG]: Running command ['udevadm', 'test-builtin', 'net_setup_link', '/sys/class/net/eth0'] with allowed return codes [0] (shell=False, capture=True)
Sep 6 00:23:13 ubuntu22 cloud-init[773]: 2022-09-06 00:23:09,049 - subp.py[DEBUG]: Running command ['udevadm', 'test-builtin', 'net_setup_link', '/sys/class/net/lo'] with allowed return codes [0] (shell=False, capture=True)
따라서 cloud-init가 네트워크 구성을 올바르게 설정할 수 있도록 하려면 내장된 설치 프로그램 netplan 구성을 제거하고 cloud-init를 다시 설치/정리해야 했습니다. 다음은 이를 위해 ansible과 함께 사용하는 단계입니다.
- name: Run cloud-init clean
ansible.builtin.shell: cloud-init clean
when: ansible_distribution == "Ubuntu"
- name: Remove cloud-init
ansible.builtin.apt:
name: cloud-init
state: absent
when: ansible_distribution == "Ubuntu"
- name: Remove /etc/cloud
ansible.builtin.shell: rm -rf /etc/cloud
when: ansible_distribution == "Ubuntu"
- name: Remove /var/lib/cloud
ansible.builtin.shell: rm -rf /var/lib/cloud
when: ansible_distribution == "Ubuntu"
- name: Reboot the Ubuntu VM
ansible.builtin.reboot:
when: ansible_distribution == "Ubuntu"
- name: Install cloud-init
ansible.builtin.apt:
name: cloud-init
state: latest
when: ansible_distribution == "Ubuntu"
- name: Remove netplan file
ansible.builtin.shell: rm -f /etc/netplan/00-installer-config.yaml
when: ansible_distribution == "Ubuntu"
ignore_errors: yes
network:
그리고 위의 내용 에는 내가 필요하다고 생각한 전체 블록을 제외하는 자동 설치 구성이 수반됩니다 .
답변3
set timeout=10
if loadfont /boot/grub/fonts/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
# background_image /boot/grub/image/splash.png
set menu_color_normal=white/black
set menu_color_highlight=black/light-red
menuentry "Install Ubuntu" {
set gfxpayload=keep
linux /casper/vmlinuz ip=dhcp cloud-config-url=/dev/null autoinstall ds="nocloud-net;s=http://xxx.xxx.xxx.xxx/autoinstall/" --- net.ifnames=0 biosdevname=0
initrd /casper/initrd
}
grub_platform
if [ "$grub_platform" = "efi" ]; then
menuentry 'Boot from next volume' {
exit 1
}
menuentry 'UEFI Firmware Settings' {
fwsetup
}
else
menuentry 'Test memory' {
linux16 /boot/memtest86+.bin
}
fi
이더넷 카드 이름은 설치 grub에서 "net.ifnames=0 biosdevname=0"으로 eth0으로 지정됩니다.