Używam Packera do utworzenia AWS AMI na podstawie obrazu Ubuntu 16.04. Na początku robię aktualizację:
sudo apt-get update
sudo apt-get upgrade -y
Oto odpowiednia część mojej sekcji dostawców:
"provisioners": [
{
"type": "shell",
"inline": [
"sudo apt-get update",
"sudo apt-get upgrade -y"
]
}
]
Łamie to jednak automatyzację, ponieważ pojawia się interaktywne okno dialogowe:
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
Próbowałem też ustawić export DEBIAN_FRONTEND=noninteractive
wcześniej (zgodnie z zaleceniami w tej odpowiedzi ). Niestety nie ma znaczenia.
Pytania:
- Czy istnieje sposób na ominięcie iteracyjnego okna dialogowego (wybranie opcji 1 byłoby w porządku)?
- Czy zamiast tego lepiej jest unikać aktualizacji i ufać, że interfejsy AMI są aktualne i zawierają krytyczne poprawki bezpieczeństwa?
Tło: To jest odpowiednia część mojej sekcji „konstruktorów”, w której skonfigurowałem ją tak, aby korzystała z najnowszej dostępnej technologii 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
},
...
}]
Uwaga : Okazuje się, że noniteractive
tryb działa, jeśli uruchomić apt-get update zarówno z -y
jak i -q
flagi.
źródło
apt-get update ; DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq
. Nie wydaje mi się, żebyapt-get update
pojawiał się monit o cokolwiek, więc prawdopodobnie nie potrzebujeDEBIAN_FRONTEND
, a więc tak naprawdę nie musiszexport
DEBIAN_FRONTEND
i nie musisz go kontynuować przez resztę twojego środowiska. W jakimkolwiek stopniu, który ma dla Ciebie znaczenie.Problem polega na tym, że zmiana pliku gruba jest zgodna z
ucf
debconf, a nie z nim, ponieważ na tym incydencie na liście apt nie jesteś sam.Jako obejście znalazłem tę odpowiedź na askunbuntu. W
menu.lst
twoim przypadku powinno wystarczyć usunięcie systemu konfiguracji UCF:To powinno uniknąć pytania grub. Ostrzegam, że każdy inny pakiet korzystający z ucf będzie również używał wersji pakietu opiekuna, dla stworzenia z podstawowego ami nie powinno to stanowić problemu, ale warto o tym pamiętać.
źródło
ucf
poprawka powinna zostać uwzględniona w kompletnym rozwiązaniu wraz z poleceniami w odpowiedzi @ PhilippClaßenAby dodać do odpowiedzi Filipa, jeśli używasz
sudo
, musisz upewnić się, że ustawiłeśDEBIAN_FRONTEND
zmienną w następujący sposób:źródło
Nie zauważyłem żadnej różnicy przy użyciu opcji -y lub -q. Może dlatego, że pytanie dotyczy użycia „pakowacza”? (Używam nagich skryptów)
W każdym razie, w moim przypadku, pozbyłem się okien dialogowych do
apt upgrade
używania następujących poleceń sed:Moja zmiana jest ograniczona do czasu aktualizacji.
Technicznie wyłącza to pytania dotyczące utrzymania lub nieistnienia istniejącej konfiguracji podczas aktualizacji gruba, ale tylko na czas aktualizacji, aby uniknąć skutków ubocznych.
System operacyjny: Ubuntu 16.04 LTS
Mam nadzieję że to pomoże
źródło
apt upgrade
sam w sobie wyjątkowo niebezpieczny? Chyba że mam migawkę lub inny skuteczny sposób na odbudowę środowiska w ciągu kilku minut, nie spróbowałbym tego.Pomijasz
-y
parametr w swoimapt-get update
poleceniu. Jeśli go dodasz, monit powinien zniknąć.Zbudowałem również obraz Ubuntu z Packerem. Oto skrypt powłoki, którego używam do przeprowadzenia aktualizacji:
https://github.com/devopskatas/learningvm/blob/master/script/update.sh
Wywodzi się to ze świetnej, dobrze utrzymanej biblioteki kompilacji Ubuntu Packer:
https://github.com/boxcutter/ubuntu
źródło
apt-get update
aktualizuje tylko listę pakietów ze zdalnego repozytorium, nie ma powodu, aby ustawić -y tam ...