Chúng tôi đang sử dụng Packer 1.7.10 trong VirtualBox 6.1.30 trên macOS 11.6.3 để xây dựng các máy ảo phát triển dựa trên Ubuntu Server 20.04.3, sử dụng tính năng tự động cài đặt trên đám mây từ ISO của máy chủ. Tệp dữ liệu người dùng bao gồm một danh sách dài các gói cần cài đặt trong lần khởi động đầu tiên.
Khi nó hoạt động, nó hoạt động tốt. Nhưng thường xuyên cài đặt các gói đó sẽ không thành công, sau 15 hoặc 20 phút trong quá trình xây dựng. Những gì có thể nhìn thấy của đầu ra trình cài đặt trong màn hình bảng điều khiển VirtualBox cho thấy rằng một số cài đặt gói đã hoàn tất. Lời nhắc tự động cài đặt cho đầu vào của người dùng và Trình đóng gói không thể phát hiện ra rằng quá trình cài đặt không thành công.
Chúng tôi đã quan sát thấy các lỗi tương tự trong các tập lệnh xây dựng máy ảo trước đây của mình, sử dụng các tệp được chèn sẵn với Ubuntu 18.04 và nguyên nhân thường là do máy nhân bản Ubuntu bị rớt hoặc từ chối kết nối. Giải pháp thay thế là chỉ định một máy nhân bản khác trong tệp chèn sẵn và thử lại.
Có cách nào để yêu cầu autoinstall thử cài đặt lại các gói hoặc chọn một máy nhân bản khác khi mất kết nối với máy nhân bản không? Hay chúng ta nên làm điều đó trong tập lệnh shell với tư cách là nhà cung cấp Trình đóng gói?
Tệp dữ liệu người dùng, với một số chi tiết bị làm giả:
#cloud-config
tự động cài đặt:
phiên bản 1
# Bản dựng sẽ không thành công với lỗi xác thực SSH nếu điều này bị bỏ qua.
xác thực:
tên máy chủ: "dev-gui"
tên người dùng: "dsa"
tên thật: "Ứng dụng Dis Simple"
mật khẩu: OMITTED
ngôn ngữ: "en_US.UTF-8"
bàn phím:
bố cục: "en"
khác nhau: ""
trình cài đặt làm mới:
cập nhật: có
ssh:
máy chủ cài đặt: đúng
allow-pw: true
# Chúng tôi KHÔNG muốn Packer bắt đầu chạy các nhà cung cấp cho đến thời điểm này
# VM đã khởi động lại.
lệnh sớm:
- "systemctl dừng sshd"
đúng cách:
bảo tồn_source_list: sai
geoip: đúng
dữ liệu người dùng:
# Đặt múi giờ lành mạnh
múi giờ: Mỹ/Los_Angeles
# Thông tin người dùng và nhóm
các nhóm:
- người đóng tàu
- dsa
- postgres
- vboxf
người dùng:
- tên: "dsa"
gecos: "Ứng dụng đơn giản"
Primary_group: "dsa"
các nhóm: [adm docker dsa postgres sudo vboxsf]
passwd: ĐÃ BỎ LỠ
lock_passwd: sai
sudo: "TẤT CẢ=(TẤT CẢ) NOPASSWD:TẤT CẢ"
# Gói để cài đặt
gói:
- con kiến
- ô tô
- chiến đấu
- bò rừng
- bmon
- cầu tiện ích
- ccache
- chrpath
- clang-gọn gàng
- cmake
- kiểm tra cpp
- Xoăn
- debconf-utils
- khác biệt
- đkm
- docker.io
- doxygen
- emacs-nox
- chờ đợi
- uốn cong
- g++-multilib
- gnuplot-nox
- iproute2
- lcov
- libcap-ng-dev
- libglib2.0-dev
- libncurses-dev
- libpixman-1-dev
- công cụ thư viện
- libtinyxml2-dev
- trợ lý mô-đun
- nfs-kernel-máy chủ
- công cụ nux
- openjdk-11-jdk
- cột trụ
- python3-git
- python3-pip
- python3-pygments
- python3-venv
- python3-virtualenv
- python3.8-dev
- socat
- lật đổ
- texinfo
- theo dõi lộ trình
- u-boot-tools
- giải nén
- xvfb
chụp nhanh:
- tên: nút
kênh: "16/ổn định"
cổ điển: đúng
- tên: người kiểm tra mã
cổ điển: đúng