Tôi đang sử dụng Packer để tạo AWS AMI dựa trên hình ảnh Ubuntu 16.04. Ban đầu, tôi đang thực hiện nâng cấp:
sudo apt-get update
sudo apt-get upgrade -y
Đây là phần có liên quan trong phần cung cấp của tôi:
"provisioners": [
{
"type": "shell",
"inline": [
"sudo apt-get update",
"sudo apt-get upgrade -y"
]
}
]
Điều này phá vỡ sự tự động hóa, tuy nhiên, khi một hộp thoại tương tác bật lên:
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
Tôi cũng đã cố gắng thiết lập export DEBIAN_FRONTEND=noninteractive
trước (như khuyến nghị trong câu trả lời này ). Thật không may, nó không làm cho sự khác biệt.
Câu hỏi:
- Có cách nào để vượt qua hộp thoại lặp (chọn tùy chọn 1 sẽ ổn không)?
- Có phải tốt hơn là tránh nâng cấp và thay vào đó tin tưởng rằng các AMI được cập nhật và chứa các bản vá bảo mật quan trọng?
Bối cảnh: Đây là phần có liên quan trong phần "nhà xây dựng" của tôi, nơi tôi đã định cấu hình nó để sử dụng AMI mới nhất có sẵn:
"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
},
...
}]
Lưu ý : Hóa ra noniteractive
chế độ hoạt động nếu bạn chạy cập nhật apt-get bằng cả cờ -y
và -q
cờ.
apt-get update ; DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq
. Tôi không nghĩapt-get update
lời nhắc cho bất cứ điều gì, vì vậy nó có thể không cầnDEBIAN_FRONTEND
, và do đó bạn không thực sự phảiexport
DEBIAN_FRONTEND
và nó tiếp tục tồn tại trong phần còn lại của môi trường của bạn. Ở bất kỳ mức độ nào quan trọng với bạn.