Я использую 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-получить обновление с обеими -y
и с -q
флагом.
источник
apt-get update ; DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq
. Я не думаю, что что-тоapt-get update
подсказывает, поэтому, вероятно, в этом нет необходимостиDEBIAN_FRONTEND
, и, таким образом, вам на самом деле не нужно, чтобыexport
DEBIAN_FRONTEND
это продолжало существовать в остальной среде. В какой степени это важно для вас.Ваша проблема заключается в том, что изменения файла grub придерживаются,
ucf
а не debconf, в соответствии с этим инцидентом в списке apt вы не одиноки.В качестве обходного пути я нашел этот ответ на askunbuntu. Удаление
menu.lst
из конфигурации системы UCF должно быть достаточно для вашего случая:Это должно избежать вопроса о личинке. Имейте в виду, что любой другой пакет, использующий ucf, также будет использовать версию пакета сопровождающего, для создания из базового ami это не должно быть проблемой, но это стоит отметить.
источник
ucf
исправление должно быть включено в полное решение вместе с командами в ответе @ PhilippClaßenЧтобы добавить к ответу Филиппа, если вы используете его,
sudo
вам нужно обязательно установитьDEBIAN_FRONTEND
переменную, например, так:источник
Я не заметил никакой разницы, используя -y или -q. Может быть, потому что вопрос об использовании "упаковщик"? (Я использую голые скрипты)
В любом случае, в моем случае я избавился от диалогов для
apt upgrade
использования следующих команд sed:Мое изменение ограничено временем обновления.
Технически, он отключает вопросы о сохранении или отсутствии существующей конфигурации при обновлении grub, но только на время обновления, чтобы избежать побочных эффектов.
ОС: Ubuntu 16.04 LTS
Надеюсь это поможет
источник
apt upgrade
в таком случае не слишком опасно? Если у меня не будет снимка или другого эффективного способа восстановления моей среды за считанные минуты, я бы не стал его пробовать.Вы опускаете
-y
параметр в своейapt-get update
команде. Если вы включите его, подсказка должна исчезнуть.Я также создал образ Ubuntu с помощью Packer. Вот сценарий оболочки, который я использую для обновления:
https://github.com/devopskatas/learningvm/blob/master/script/update.sh
Это происходит от отличной, хорошо поддерживаемой библиотеки сборок Ubuntu Packer:
https://github.com/boxcutter/ubuntu
источник
apt-get update
обновляет только список пакетов из удаленного репозитория, нет причин устанавливать -y там ...