AL2에서 cloud-init 사용 - Amazon Linux 2

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AL2에서 cloud-init 사용

cloud-init 패키지는 Canonical에서 구축한 오픈 소스 애플리케이션이며 Amazon EC2와 같은 클라우드 컴퓨팅 환경에서 Linux 이미지 부트스트랩을 수행하는 데 사용됩니다. Amazon Linux에는 cloud-init의 사용자 지정 버전이 포함됩니다. 이렇게 하면 부팅 시 인스턴스에 발생해야 하는 작업을 지정할 수 있습니다. 인스턴스를 시작할 때 사용자 데이터 필드를 통해 원하는 작업을 cloud-init로 전달할 수 있습니다. 즉, 여러 사용 사례에 공통 AMI를 사용하고 이러한 AMI를 시작 시 동적으로 구성할 수 있습니다. 또한 Amazon Linux는 cloud-init를 사용하여 ec2-user 계정의 초기 구성을 수행합니다.

자세한 내용은 cloud-init 설명서를 참조하세요.

Amazon Linux는 /etc/cloud/cloud.cfg.d/etc/cloud/cloud.cfg에 있는 cloud-init 작업을 사용합니다. /etc/cloud/cloud.cfg.d에서 자체 cloud-init 작업 파일을 만들 수 있습니다. 이 디렉터리의 모든 파일은 cloud-init으로 읽습니다. 어휘 순으로 읽히며, 나중의 파일이 이전 파일의 값을 덮어씁니다.

cloud-init 패키지는 부팅 시 인스턴스에 대해 다음과 같은 일반적인 구성 작업을 수행합니다.

  • 기본 로캘 설정.

  • 호스트 이름 설정.

  • 사용자 데이터 구문 분석 및 처리.

  • 호스트 프라이빗 SSH 키 생성.

  • 손쉬운 로그인 및 관리를 위해 사용자의 퍼블릭 SSH 키를 .ssh/authorized_keys에 추가.

  • 패키지 관리를 위한 리포지토리 준비.

  • 사용자 데이터에 정의된 패키지 작업 처리.

  • 사용자 데이터에 있는 사용자 스크립트를 실행합니다.

  • 해당하는 경우 인스턴스 스토어 볼륨을 탑재합니다.

    • 기본적으로 ephemeral0 인스턴스 스토어 볼륨은 /media/ephemeral0이 있고 유효한 파일 시스템이 포함된 경우 여기에 마운트됩니다. 그렇지 않은 경우 마운트되지 않습니다.

    • 기본적으로 인스턴스와 연결된 모든 스왑 볼륨이 탑재됩니다(m1.smallc1.medium 인스턴스 유형만 해당).

    • 다음 cloud-init 명령을 사용하여 기본 인스턴스 스토어 볼륨 탑재를 재정의할 수 있습니다.

      #cloud-config mounts: - [ ephemeral0 ]

      탑재를 더 세부적으로 제어하려면 cloud-init 설명서의 탑재를 참조하세요.

    • TRIM을 지원하는 인스턴스 스토어 볼륨은 인스턴스를 시작할 때 포맷되지 않으므로, 볼륨을 파티셔닝하고 포맷한 후 탑재해야 합니다. 자세한 내용은 인스턴스 스토어 볼륨 TRIM 지원을 참조하세요. disk_setup 모듈을 사용하여 부팅 시 인스턴스 스토어 볼륨을 파티셔닝하고 포맷할 수 있습니다. 자세한 내용은 cloud-init 문서의 Disk Setup을 참조하세요.

지원되는 사용자 데이터 형식

cloud-init 패키지는 다양한 형식의 사용자 데이터 처리를 지원합니다.

  • Gzip

    • 사용자 데이터가 gzip으로 압축된 경우 cloud-init는 데이터의 압축을 풀고 적절하게 처리합니다.

  • MIME 멀티파트

    • MIME 멀티파트 파일을 사용하여 두 가지 이상의 데이터 유형을 지정할 수 있습니다. 예를 들어 사용자 데이터 스크립트와 클라우드 구성 유형을 모두 지정할 수 있습니다. 멀티파트 파일의 각 부분은 지원되는 형식 중 하나일 경우 cloud-init에 의해 처리할 수 있습니다.

  • Base64 디코딩

    • 사용자 데이터가 base64로 인코딩된 경우 cloud-init는 디코딩된 데이터를 지원되는 유형 중 하나로 이해할 수 있는지 여부를 결정합니다. 디코딩된 데이터를 인식하는 경우 데이터를 디코딩하여 그에 맞게 처리합니다. 그렇지 않을 경우 base64 데이터를 원상태로 반환합니다.

  • 사용자 데이터 스크립트

    • #! 또는 Content-Type: text/x-shellscript로 시작합니다.

    • 스크립트는 첫 부팅 주기에 /etc/init.d/cloud-init-user-scripts에 의해 실행됩니다. 이 동작은 부팅 프로세스 후반(초기 구성 작업이 수행된 후)에 발생합니다.

  • Include 파일

    • #include 또는 Content-Type: text/x-include-url로 시작합니다.

    • 이것은 include 파일의 내용입니다. 이 파일에는 줄당 URL 하나씩, URL 목록이 포함되어 있습니다. 각각의 URL을 읽어오며 해당 내용이 이 동일한 규칙 세트를 통과합니다. URL에서 읽어온 콘텐츠는 gzip으로 압축된 형태이거나 MIME-multi-part 또는 일반 텍스트 형태일 수 있습니다.

  • 클라우드 구성 데이터

    • #cloud-config 또는 Content-Type: text/cloud-config로 시작합니다.

    • 이 콘텐츠는 클라우드 구성 데이터입니다.

  • Upstart 작업(AL2에서는 지원되지 않음)

    • #upstart-job 또는 Content-Type: text/upstart-job로 시작합니다.

    • 이 콘텐츠는의 파일에 저장되며/etc/init, 업스타트는 다른 업스타트 작업과 마찬가지로 콘텐츠를 사용합니다.

  • 클라우드 부트후크

    • #cloud-boothook 또는 Content-Type: text/cloud-boothook로 시작합니다.

    • 이것은 bookhook 데이터의 내용입니다. /var/lib/cloud에 있는 파일에 저장된 후 즉시 실행됩니다.

    • 이것은 맨 처음으로 사용 가능한 hook입니다. 한 번만 실행되도록 제공된 메커니즘이 없습니다. boothook는 이 부분을 자체적으로 처리해야 합니다. 환경 변수 INSTANCE_ID에 인스턴스 ID가 함께 제공됩니다. 이 변수를 사용하여 boothook 데이터의 인스턴스당 1회 세트를 제공하세요.