Непоследовательное поведение `apt-get update` на официальном Ubuntu AWS AMI

Непоследовательное поведение `apt-get update` на официальном Ubuntu AWS AMI

Я получаю различные и непоследовательные ошибки с aptофициальными образами Ubuntu ( ami-83e769fb). Я использую Packer для сборки моего AMI, и он терпит неудачу примерно в 40% случаев. Повторный запуск скрипта проходит успешно.

Мой скрипт работает:

sudo apt-get clean all
sudo apt-get update

перед установкой любых пакетов.

Иногда я получаю такую ​​ошибку:

amazon-ebs: W: GPG error: http://archive.ubuntu.com/ubuntu artful InRelease: Splitting up /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_artful_InRelease into data and signature failed
amazon-ebs: E: The repository 'http://archive.ubuntu.com/ubuntu artful InRelease' is not signed.

Иногда apt-get updateсрабатывает http://us-west-2.ec2.archive.ubuntu.com/ubuntu... иногда нет.

В других случаях пакеты отсутствуют (например, apache2или python3).

Я не понимаю, почему такое поведение непоследовательно.

Как мне добиться apt-get updateстабильной работы официального Ubuntu AMI?

решение1

Если вы используете, cloud-initвы можете дождаться его завершения.

while [ ! -f /var/lib/cloud/instance/boot-finished ]; do
   echo 'Waiting for cloud-init...'
   sleep 1
done

например упаковщик json:

{
  "type": "shell",
  "inline": [
    "while [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo 'Waiting for cloud-init...'; sleep 1; done"
  ]
}

Ссылка:

решение2

packer.json перед предоставлением:

"provisioners": [
    {
       "type": "shell",
       "inline": ["/usr/bin/cloud-init status --wait"]
},

решение3

Я только что сам столкнулся с этой проблемой и считаю, что она возникает из-за того, что cloud-init все еще находится в процессе настройки экземпляра EC2 при apt-getзапуске. Я решил ее, вставив 30-секундную задержку в свой скрипт, которая запускается сразу после загрузки экземпляра. Я думаю, лучшим способом было бы попросить cloud-init запустить все скрипты User Dataили даже позволить ему обрабатывать установку пакетов и обновления для вас [1]. Для моего варианта использования, где я не хочу подтверждать cloud-init, добавление задержки было приемлемым решением.

  1. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html

Связанный контент