Ich verwende Packer , um ein AWS AMI basierend auf einem Ubuntu 16.04-Image zu erstellen. Am Anfang mache ich ein Upgrade:
sudo apt-get update
sudo apt-get upgrade -y
Hier ist der relevante Teil meines Provisioner-Abschnitts:
"provisioners": [
{
"type": "shell",
"inline": [
"sudo apt-get update",
"sudo apt-get upgrade -y"
]
}
]
Dies unterbricht jedoch die Automatisierung, da ein interaktives Dialogfeld angezeigt wird:
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
Ich habe auch versucht, export DEBIAN_FRONTEND=noninteractive
vorher einzustellen (wie in dieser Antwort empfohlen ). Leider macht es keinen Unterschied.
Fragen:
- Gibt es eine Möglichkeit, den iterativen Dialog zu umgehen (Auswahl von Option 1 wäre in Ordnung)?
- Ist es stattdessen besser, Upgrades zu vermeiden und stattdessen darauf zu vertrauen, dass die AMIs auf dem neuesten Stand sind und die kritischen Sicherheitspatches enthalten?
Hintergrund: Dies ist der relevante Teil meines Abschnitts "Builder", in dem ich ihn für die Verwendung des neuesten verfügbaren AMI konfiguriert habe:
"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
},
...
}]
Hinweis : Es stellt sich heraus, dass der noniteractive
Modus funktioniert, wenn Sie apt-get update sowohl mit dem -y
als auch mit dem -q
Flag ausführen .
apt-get update ; DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq
. Ich denkeapt-get update
, es werden keine Eingabeaufforderungen angezeigt, daher ist dies wahrscheinlich nicht erforderlichDEBIAN_FRONTEND
, und Sie müssenexport
DEBIAN_FRONTEND
und müssen es daher auch nicht für den Rest Ihrer Umgebung beibehalten. In welchem Maße auch immer Ihnen das wichtig ist.