Saya menggunakan Packer untuk membuat AWS AMI berdasarkan pada gambar Ubuntu 16.04. Pada awalnya, saya melakukan peningkatan:
sudo apt-get update
sudo apt-get upgrade -y
Inilah bagian yang relevan dari bagian penyedia saya:
"provisioners": [
{
"type": "shell",
"inline": [
"sudo apt-get update",
"sudo apt-get upgrade -y"
]
}
]
Ini memecah otomatisasi, namun, ketika dialog interaktif muncul:
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
Saya juga mencoba mengatur export DEBIAN_FRONTEND=noninteractive
sebelumnya (seperti yang direkomendasikan dalam jawaban ini ). Sayangnya, tidak ada bedanya.
Pertanyaan:
- Apakah ada cara untuk melewati dialog iteraktif (memilih opsi 1 akan baik-baik saja)?
- Apakah lebih baik untuk menghindari peningkatan dan bukannya percaya bahwa AMI terbaru dan berisi tambalan keamanan penting?
Latar Belakang: Ini adalah bagian yang relevan dari bagian "pembangun" saya, tempat saya mengonfigurasinya untuk menggunakan AMI terbaru yang tersedia:
"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
},
...
}]
Catatan : Ternyata bahwa noniteractive
modus bekerja jika Anda menjalankan apt-get update dengan baik -y
dan -q
bendera.
sumber
apt-get update ; DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq
. Saya tidak berpikirapt-get update
meminta apa pun, jadi itu mungkin tidak perluDEBIAN_FRONTEND
, dan dengan demikian Anda tidak benar-benar harusexport
DEBIAN_FRONTEND
dan terus ada melalui seluruh lingkungan Anda. Untuk tingkat apa pun yang penting bagi Anda.Masalah Anda adalah bahwa perubahan file grub mematuhi
ucf
dan bukan debconf, karena kejadian ini pada daftar apt Anda tidak sendirian.Sebagai solusinya saya menemukan jawaban ini di askunbuntu. Menghapus
menu.lst
dari sistem konfigurasi UCF harus cukup, untuk kasus Anda:Ini harus menghindari pertanyaan grub. Berhati-hatilah bahwa paket lain yang menggunakan ucf juga akan menggunakan versi paket pengelola, untuk pembuatan dari basis ami ini seharusnya tidak menjadi masalah, tetapi patut dicatat.
sumber
ucf
perbaikan ini harus dimasukkan dalam solusi lengkap bersama dengan perintah-perintah dalam jawaban oleh @ PhilippClaßenUntuk menambah jawaban Philipp, jika Anda menggunakan
sudo
maka Anda perlu memastikan untuk mengaturDEBIAN_FRONTEND
variabel setelahnya, seperti:sumber
Saya tidak melihat adanya perbedaan menggunakan -y atau -q. Mungkin karena pertanyaannya adalah tentang menggunakan "pengepak"? (Saya menggunakan skrip kosong)
Bagaimanapun, dalam kasus saya, saya menyingkirkan dialog untuk
apt upgrade
menggunakan perintah sed berikut di sekitarnya:Perubahan saya terbatas pada waktu peningkatan.
Secara teknis, ini menonaktifkan pertanyaan tentang menjaga atau tidak konfigurasi yang ada saat memutakhirkan grub, tetapi hanya untuk saat upgrade, untuk menghindari efek samping.
OS: Ubuntu 16.04 LTS
Semoga ini membantu
sumber
apt upgrade
sendirian sangat berbahaya dalam kasus seperti itu? Kecuali saya memiliki snapshot atau cara lain yang efisien untuk membangun kembali lingkungan saya dalam hitungan menit, saya tidak akan mencobanya.Anda menghilangkan
-y
parameter dariapt-get update
perintah Anda . Jika Anda memasukkannya, prompt harus pergi.Saya telah membangun citra Ubuntu dengan Packer juga. Berikut ini skrip shell yang saya gunakan untuk melakukan pembaruan:
https://github.com/devopskatas/learningvm/blob/master/script/update.sh
Ini berasal dari pustaka hebat Ubuntu Packer builds:
https://github.com/boxcutter/ubuntu
sumber
apt-get update
tidak hanya memperbarui daftar paket dari repositori jarak jauh, tidak ada alasan untuk mengatur -y di sana ...