เรากำลังใช้ Packer 1.7.10 ภายใต้ VirtualBox 6.1.30 บน macOS 11.6.3 เพื่อสร้าง VMs สำหรับการพัฒนาโดยใช้ Ubuntu Server 20.04.3 โดยใช้ cloud-init autoinstall จากเซิร์ฟเวอร์ ISO ไฟล์ข้อมูลผู้ใช้ประกอบด้วยรายการแพ็คเกจจำนวนมากที่จะติดตั้งระหว่างการบู๊ตครั้งแรก
เมื่อมันทำงานได้ดี แต่บ่อยครั้งการติดตั้งแพ็คเกจเหล่านั้นจะล้มเหลว 15 หรือ 20 นาทีในการสร้าง สิ่งที่มองเห็นได้จากเอาต์พุตของตัวติดตั้งในหน้าจอคอนโซล VirtualBox แสดงว่าการติดตั้งแพ็คเกจบางส่วนเสร็จสิ้นแล้ว ติดตั้งอัตโนมัติพร้อมท์ให้ผู้ใช้ป้อนข้อมูล และ Packer ตรวจไม่พบว่าการติดตั้งล้มเหลว
เราสังเกตเห็นความล้มเหลวที่คล้ายกันภายใต้สคริปต์บิลด์ VM ก่อนหน้านี้ โดยใช้ไฟล์ preseed กับ Ubuntu 18.04 และโดยปกติแล้วเป็นเพราะมิเรอร์ของ Ubuntu หลุดหรือปฏิเสธการเชื่อมต่อ วิธีแก้ปัญหาคือระบุมิเรอร์อื่นในไฟล์ preseed แล้วลองอีกครั้ง
มีวิธีใดที่จะบอกให้ติดตั้งอัตโนมัติเพื่อลองติดตั้งแพ็คเกจอีกครั้ง หรือเลือกมิรเรอร์อื่น เมื่อการเชื่อมต่อกับมิเรอร์ขาดหายไป หรือเราควรทำในเชลล์สคริปต์ในฐานะผู้จัดเตรียม Packer จะดีกว่า
ไฟล์ข้อมูลผู้ใช้ที่มีรายละเอียดบางอย่างเหลวไหล:
#cloud-config
ติดตั้งอัตโนมัติ:
รุ่น: 1
# บิลด์จะล้มเหลวโดยมีข้อผิดพลาดในการตรวจสอบสิทธิ์ SSH หากละเว้น
ตัวตน:
ชื่อโฮสต์: "dev-gui"
ชื่อผู้ใช้: "dsa"
ชื่อจริง: "Dis Simple App"
รหัสผ่าน: OMITTED
ภาษา: "en_US.UTF-8"
แป้นพิมพ์:
รูปแบบ: "en"
ตัวแปร: ""
โปรแกรมติดตั้งรีเฟรช:
ปรับปรุง: ใช่
ssh:
ติดตั้งเซิร์ฟเวอร์: จริง
อนุญาต pw: จริง
# เราไม่ต้องการให้ Packer เริ่มเรียกใช้ตัวจัดเตรียมจนกว่าจะถึงเวลานี้
# VM รีบูตแล้ว
คำสั่งเริ่มต้น:
- "systemctl หยุด sshd"
ถนัด:
การเก็บรักษา_sources_list: เท็จ
geoip: จริง
ข้อมูลผู้ใช้:
# ตั้งเขตเวลาที่เหมาะสม
เขตเวลา: อเมริกา/Los_Angeles
# ข้อมูลผู้ใช้และกลุ่ม
กลุ่ม:
- นักเทียบท่า
- สพฐ
- โพสต์เกรส
-vboxsf
ผู้ใช้:
- ชื่อ: "ดีเอสเอ"
gecos: "ปิดแอปอย่างง่าย"
กลุ่มหลัก: "dsa"
กลุ่ม: [adm นักเทียบท่า dsa postgres sudo vboxsf]
รหัสผ่าน: ละเว้น
lock_passwd: เท็จ
sudo: "ALL=(ALL) NOPASSWD:ทั้งหมด"
#ชุดติดตั้ง
แพ็คเกจ:
- มด
- รถยนต์
- แบตเตอรี
- วัวกระทิง
- บีมอน
- ยูทิลิตี้สะพาน
- แคช
- ไครพาธ
- เสียงดังกราว
- คอมเมค
- ซีพีเช็ค
- ขด
- debconf-utils
- ความแตกต่าง
- ดีกม
- docker.io
- ด็อกซิเจน
- emacs-nox
- คาดหวัง
- ดิ้น
- g++-มัลติลิบ
- gnuplot-nox
- iproute2
- แอลคอฟ
- libcap-ng-dev
- libglib2.0-dev
- libncurses-dev
- libpixman-1-dev
- ลิบทูล
- libtinyxml2-dev
- ผู้ช่วยโมดูล
- nfs-เคอร์เนล-เซิร์ฟเวอร์
- เครื่องมือ nux
- openjdk-11-jdk
- ไพลิน
- python3-git
- python3-pip
- python3-pygments
- python3-venv
- python3-virtualenv
- python3.8-dev
- โซแคท
- การโค่นล้ม
- เท็กซัสอินโฟ
- ติดตามเส้นทาง
- u-boot-เครื่องมือ
- เปิดเครื่องรูด
- xvfb
งับ:
- ชื่อ: โหนด
ช่อง: "16/เสถียร"
คลาสสิก: จริง
- ชื่อ: ตัวตรวจสอบรหัส
คลาสสิก: จริง