Я використовую 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 було б добре)?
- Чи замість цього краще уникати оновлень і замість цього вважати, що AMI оновлені та містять критичні виправлення безпеки?
Передумови: Це відповідна частина мого розділу "будівельники", де я налаштував його на використання останнього доступного 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
і це продовжує існувати через решту вашого оточення. Наскільки це важливо для вас.