공식 Ubuntu AWS AMI에서 일관되지 않은 `apt-get update` 동작

공식 Ubuntu AWS AMI에서 일관되지 않은 `apt-get update` 동작

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

관련 정보