Comportamiento inconsistente de `apt-get update` en la AMI oficial de Ubuntu AWS

Comportamiento inconsistente de `apt-get update` en la AMI oficial de Ubuntu AWS

Recibo varios errores inconsistentes en aptlas imágenes oficiales de Ubuntu ( ami-83e769fb). Estoy usando Packer para construir mi AMI y falla aproximadamente el 40% de las veces. La ejecución del script se realiza correctamente.

Mi script se ejecuta:

sudo apt-get clean all
sudo apt-get update

antes de instalar cualquier paquete.

Algunas veces me sale este error:

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.

Algunas veces apt-get updateacierta http://us-west-2.ec2.archive.ubuntu.com/ubuntu... otras veces no.

Otras veces faltan paquetes (como apache2o python3).

No entiendo por qué este comportamiento es inconsistente.

¿Cómo puedo hacer que apt-get updatela AMI oficial de Ubuntu funcione de manera consistente?

Respuesta1

Si lo está utilizando, cloud-initpuede esperar a que se complete.

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

por ejemplo, empaquetador json:

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

Referencia:

Respuesta2

packer.json antes del aprovisionamiento:

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

Respuesta3

Me encontré con este problema y creo que sucede porque cloud-init todavía está en el proceso de configurar la instancia EC2 cuando apt-getse ejecuta. Lo resolví insertando un retraso de 30 segundos en mi script que se ejecuta inmediatamente después de que se inicia la instancia. Creo que una mejor manera sería pedirle a cloud-init que ejecute los scripts User Datao incluso dejar que se encargue de la instalación del paquete y las actualizaciones por usted [1]. Para mi caso de uso, donde no quiero reconocer el inicio de la nube, agregar el retraso fue una solución aceptable.

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

información relacionada