J'utilise Packer pour créer une AWS AMI basée sur une image Ubuntu 16.04. Au début, je fais une mise à niveau:
sudo apt-get update
sudo apt-get upgrade -y
Voici la partie pertinente de ma section Provisioners:
"provisioners": [
{
"type": "shell",
"inline": [
"sudo apt-get update",
"sudo apt-get upgrade -y"
]
}
]
Cependant, cela rompt l'automatisation lorsqu'une boîte de dialogue interactive apparaît:
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
J'ai également essayé de définir export DEBIAN_FRONTEND=noninteractive
avant (comme recommandé dans cette réponse ). Malheureusement, cela ne fait aucune différence.
Des questions:
- Existe-t-il un moyen de dépasser la boîte de dialogue itérative (sélectionner l'option 1 serait bien)?
- Est-il préférable d'éviter les mises à niveau et de croire plutôt que les AMI sont à jour et contiennent les correctifs de sécurité critiques?
Contexte: C'est la partie pertinente de ma section "constructeurs", où je l'ai configurée pour utiliser la dernière AMI disponible:
"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
},
...
}]
Remarque : Il s'avère que le noniteractive
mode fonctionne si vous exécutez la mise à jour apt-get avec à la fois -y
l' -q
indicateur et.
apt-get update ; DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq
. Je ne pense pas que celaapt-get update
demande quoi que ce soit, donc cela n'a probablement pas besoinDEBIAN_FRONTEND
, et donc vous n'avez pas vraiment à le faireexport
DEBIAN_FRONTEND
et à le faire continuer d'exister dans le reste de votre environnement. Dans la mesure où cela vous importe.