ฉันใช้Packerเพื่อสร้าง AWS AMI จากอิมเมจ Ubuntu 16.04 ในการเริ่มต้นฉันทำการอัพเกรด:
sudo apt-get update
sudo apt-get upgrade -y
นี่คือส่วนที่เกี่ยวข้องของส่วนผู้จัดหาของฉัน:
"provisioners": [
{
"type": "shell",
"inline": [
"sudo apt-get update",
"sudo apt-get upgrade -y"
]
}
]
สิ่งนี้จะทำลายการทำให้เป็นอัตโนมัติอย่างไรก็ตามเมื่อไดอะล็อกโต้ตอบปรากฏขึ้น:
amazon-ebs: Found kernel: /boot/vmlinuz-4.4.0-72-generic
amazon-ebs: A new version of /boot/grub/menu.lst is available, but the version installed
amazon-ebs: currently has been locally modified.
amazon-ebs:
amazon-ebs: 1. install the package maintainer's version
amazon-ebs: 2. keep the local version currently installed
amazon-ebs: 3. show the differences between the versions
amazon-ebs: 4. show a side-by-side difference between the versions
amazon-ebs: 5. show a 3-way difference between available versions
amazon-ebs: 6. do a 3-way merge between available versions (experimental)
amazon-ebs: 7. start a new shell to examine the situation
ฉันพยายามตั้งค่าexport DEBIAN_FRONTEND=noninteractive
ก่อนหน้า (ตามคำแนะนำในคำตอบนี้ ) น่าเสียดายที่มันไม่สร้างความแตกต่าง
คำถาม:
- มีวิธีที่จะผ่านกล่องโต้ตอบแบบวนซ้ำ (การเลือกตัวเลือก 1 จะดีหรือไม่)?
- มันจะดีกว่าเพื่อหลีกเลี่ยงการอัพเกรดและแทนที่จะไว้วางใจว่า AMIs เป็นรุ่นล่าสุดและมีแพตช์รักษาความปลอดภัยที่สำคัญอยู่หรือไม่?
พื้นหลัง: นี่คือส่วนที่เกี่ยวข้องของส่วน "ผู้สร้าง" ของฉันซึ่งฉันกำหนดค่าให้ใช้ AMI ที่มีอยู่ล่าสุด:
"builders": [{
"type": "amazon-ebs",
"region": "eu-central-1",
...
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "*ubuntu-xenial-16.04-amd64-server-*",
"root-device-type": "ebs"
},
"owners": ["099720109477"],
"most_recent": true
},
...
}]
หมายเหตุ : ปรากฎว่าnoniteractive
โหมดใช้งานได้หากคุณรันการอัพเดต apt-get ทั้งกับ-y
และ-q
แฟล็ก
apt-get update ; DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq
ลดความซับซ้อนที่ ฉันไม่คิดว่าapt-get update
จะขออะไรเลยดังนั้นจึงไม่จำเป็นDEBIAN_FRONTEND
และคุณไม่ต้องทำexport
DEBIAN_FRONTEND
และยังคงมีอยู่ต่อไปในสภาพแวดล้อมที่เหลือของคุณ ไม่ว่าคุณจะอยู่ในระดับใดก็ตาม