Folosim Packer 1.7.10 sub VirtualBox 6.1.30 pe macOS 11.6.3 pentru a construi mașini virtuale de dezvoltare bazate pe Ubuntu Server 20.04.3, utilizând autoinstalarea cloud-init de pe serverul ISO. Fișierul de date utilizator include o listă lungă de pachete de instalat la prima pornire.
Când funcționează, funcționează bine. Dar instalarea frecventă a acestor pachete va eșua, după 15 sau 20 de minute de la compilare. Ceea ce este vizibil din rezultatul programului de instalare în ecranul consolei VirtualBox arată că unele dintre instalările pachetelor s-au finalizat. Instalarea automată solicită introducerea utilizatorului și Packer nu poate detecta că instalarea a eșuat.
Am observat eșecuri similare în scripturile noastre anterioare de construire a VM, folosind fișiere preseed cu Ubuntu 18.04 și, de obicei, a fost pentru că o oglindă Ubuntu a scăpat sau a refuzat o conexiune. Soluția a fost să specificați o oglindă diferită în fișierul preseed și să încercați din nou.
Există vreo modalitate de a spune autoinstalării să reîncerce instalarea pachetelor sau să aleagă o altă oglindă, atunci când conexiunea la oglindă este pierdută? Sau ar fi mai bine să o facem într-un script shell ca furnizor de pachete?
Fișierul cu datele utilizatorului, cu câteva detalii falsificate:
#cloud-config
autoinstalare:
versiunea: 1
# Construirea va eșua cu o eroare de autentificare SSH dacă aceasta este omisă.
identitate:
Nume gazdă: "dev-gui"
nume de utilizator: "dsa"
realname: „Dis Simple App”
parola: OMISĂ
local: „en_US.UTF-8”
tastatură:
aspect: "ro"
variantă: ""
reîmprospătare-instalare:
actualizare: da
ssh:
install-server: adevărat
permit-pw: adevărat
# NU vrem ca Packer să înceapă să execute furnizori până acum
# VM a repornit.
comenzi timpurii:
- „systemctl stop sshd”
apt:
preserve_sources_list: fals
geoip: adevărat
datele utilizatorului:
# Setați un fus orar corect
fus orar: America/Los_Angeles
# Informații despre utilizator și grup
grupuri:
- docker
- dsa
- postgres
- vboxsf
utilizatori:
- nume: "dsa"
gecos: „Dis Simple App”
primary_group: „dsa”
grupuri: [adm docker dsa postgres sudo vboxsf]
passwd: OMIS
lock_passwd: fals
sudo: "ALL=(ALL) NOPASSWD:ALL"
# Pachete de instalat
pachete:
- furnică
- fabrica auto
- batctl
- zimbri
- bmon
- bridge-utils
- ccache
- chrpath
- clang-tidy
- face
- cppcheck
- bucle
- debconf-utils
- diffstat
- dkms
- docker.io
- doxigen
- emacs-nox
- asteptati
- contracta
- g++-multilib
- gnuplot-nox
- iproute2
- lcov
- libcap-ng-dev
- libglib2.0-dev
- libncurses-dev
- libpixman-1-dev
- libtool
- libtinyxml2-dev
- modul-asistent
- nfs-kernel-server
- nux-tools
- openjdk-11-jdk
- pilint
- python3-git
- python3-pip
- python3-pigmenti
- python3-venv
- python3-virtualenv
- python3.8-dev
- socat
- subversiune
- texinfo
- traceroute
- instrumente u-boot
- dezarhivați
- xvfb
clasează:
- nume: nod
canal: "16/stabil"
clasic: adevărat
- nume: codechecker
clasic: adevărat