사용자 지정 AMI 사용 - AWS OpsWorks

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

사용자 지정 AMI 사용

중요

이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 고객과 기존 고객 모두 사용할 수 없게 되었습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 AWS re:Post 또는 Premium AWS Support를 통해 AWS Support 팀에 문의하세요.

AWS OpsWorks 스택은 인스턴스를 사용자 지정하는 두 가지 방법, 즉 사용자 지정 Amazon 머신 이미지 (AMI) 와 Chef 레시피를 지원합니다. 두 방법 모두 설치되는 패키지와 패키지 버전 및 구성 방식 등을 제어할 수 있습니다. 다만 각 방법은 장점이 서로 다르므로 요구 사항에 따라 가장 좋은 방법이 달라집니다.

사용자 지정 AMI 사용을 고려해야 하는 주된 이유는 다음과 같습니다.

  • 특정 패키지를 인스턴스 부팅 후 설치하는 대신 사전 번들하려고 하는 경우.

  • 계층의 일관된 기본 이미지를 제공하기 위해 패키지 업데이트 타이밍을 제어하려고 하는 경우.

  • 인스턴스(특히 로드 기반 인스턴스)가 최대한 빨리 부팅되기를 원하는 경우.

Chef 레시피 사용을 고려해야 하는 주된 이유는 다음과 같습니다.

  • Chef 레시피는 사용자 지정 AMI보다 유연합니다.

  • 업데이트가 보다 쉽습니다.

  • 실행 중인 인스턴스에서 업데이트를 수행할 수 있습니다.

실제로는 두 방법의 조합이 최적의 해법일 수 있습니다. 레시피에 대한 자세한 내용은 쿡북과 레시피 단원을 참조하세요.

사용자 지정 AMI가 스택과 작동하는 방식 AWS OpsWorks

인스턴스에 사용자 지정 AMI를 지정하려면 새 인스턴스를 생성할 때 사용자 지정 AMI를 인스턴스의 운영 체제로 사용을 선택합니다. AWS OpsWorks 그러면 스택에 스택 지역의 사용자 지정 AMI 목록이 표시되고 목록에서 적절한 AMI를 선택합니다. 자세한 정보는 계층에 인스턴스 추가을 참조하세요.

참고

특정 사용자 지정 AMI를 스택의 기본 운영 체제로 지정할 수는 없습니다. Use custom AMI를 스택의 기본 운영 체제로 지정할 수 있지만 새 인스턴스를 계층에 추가할 때만 특정 AMI를 지정할 수 있습니다. 자세한 내용은 계층에 인스턴스 추가새 스택 생성 섹션을 참조하세요. 사용자 지정 또는 커뮤니티 생성 AMI에서 생성된 다른 운영 체제(예: CentOS 6.x)에서 인스턴스를 생성하는 것도 가능하지만 이런 운영 체제는 공식 지원되지 않습니다.

이 주제에서는 사용자 지정 AMI를 생성하거나 사용하기 전에 고려해야 하는 몇 가지 일반적인 문제를 살펴봅니다.

시작 동작

인스턴스를 시작하면 AWS OpsWorks Stacks는 지정된 사용자 지정 AMI를 사용하여 새 Amazon EC2 인스턴스를 시작합니다. AWS OpsWorks 그런 다음 Stacks는 cloud-init를 사용하여 인스턴스에 AWS OpsWorks Stacks 에이전트를 설치하고 에이전트는 인스턴스의 설치 레시피를 실행한 다음 배포 레시피를 실행합니다. 인스턴스가 온라인 상태가 된 후 에이전트는 새로 추가된 인스턴스를 포함하여 스택의 모든 인스턴스에 대해 Configure 레시피를 실행합니다.

계층 선택

AWS OpsWorks Stacks 에이전트는 일반적으로 설치된 패키지와 충돌하지 않습니다. 하지만 인스턴스는 적어도 하나 이상의 계층에 속해야 합니다. AWS OpsWorks 스택은 항상 해당 레이어의 레시피를 실행하므로 문제가 발생할 수 있습니다. 사용자 지정 AMI가 있는 인스턴스를 계층에 추가하기 전에 항상 해당 계층의 레시피가 하는 일이 무엇인지 정확히 이해해야 합니다.

특정 계층 유형이 인스턴스에서 어떤 레시피를 실행하는지 보려면 해당 계층이 포함된 스택을 엽니다. 그런 다음 탐색 창에서 [계층]를 클릭하고 관심 있는 계층의 [레시피]를 클릭합니다. 실제 코드를 보려면 레시피 이름을 클릭합니다.

참고

Linux AMI의 경우 충돌 가능성을 줄이는 한 가지 방법은 AWS OpsWorks 스택을 사용하여 사용자 지정 AMI의 기반이 되는 인스턴스를 프로비저닝하고 구성하는 것입니다. 자세한 정보는 AWS OpsWorks 스택 인스턴스에서 사용자 지정 Linux AMI 생성을 참조하세요.

애플리케이션 처리

AMI에 패키지 외에 애플리케이션을 포함시킬 수도 있습니다. 크고 복잡한 애플리케이션이 있는 경우, AMI에 포함시키면 인스턴스의 시작 시간이 단축될 수 있습니다. AMI에 소규모 애플리케이션을 포함할 수 있지만 AWS OpsWorks Stacks가 애플리케이션을 배포하는 것에 비해 일반적으로 시간상의 이점은 거의 또는 전혀 없습니다.

한 가지 방법은 AMI에 애플리케이션을 포함시키고 이 애플리케이션을 리포지토리에서 인스턴스로 배포하는 앱도 생성하는 것입니다. 이 방법은 부팅 시간을 단축시킬 뿐 아니라 인스턴스 실행 후 애플리케이션을 간편하게 업데이트할 수 있습니다. Chef 레시피는 idempotent 방식이므로 리포지토리에 있는 버전이 인스턴스에 있는 버전과 동일하다면 배포 레시피가 애플리케이션을 수정하지 않는다는 점에 유의하세요.

AWS OpsWorks 스택용 사용자 지정 AMI 생성

AWS OpsWorks Stacks와 함께 사용자 지정 AMI를 사용하려면 먼저 사용자 지정 인스턴스에서 AMI를 생성해야 합니다. 다음 두 가지 옵션 중에서 선택할 수 있습니다.

  • Amazon EC2 콘솔 또는 API를 사용하여 AWS OpsWorks Stacks 지원 AMI 중 하나의 64비트 버전을 기반으로 인스턴스를 생성하고 사용자 지정합니다.

  • Linux AMI의 경우 관련 계층의 구성을 기반으로 Amazon EC2 인스턴스를 생성하는 OpsWorks 데 사용합니다.

사용자 지정 Linux AMI를 생성하기 전에 /tmp 파티션을 noexec 비활성화하여 AWS OpsWorks Stacks가 사용자 지정 Linux 인스턴스에 에이전트를 설치할 수 있도록 하십시오.

참고

AMI와 호환되지 않는 인스턴스 유형이 있을 수 있으므로 사용하려는 인스턴스 유형과 시작 AMI가 호환되는지 확인해야 합니다. 특히 R3 인스턴스 유형은 하드웨어 보조 가상화(HVM) AMI가 필요합니다.

그런 다음 Amazon EC2 콘솔 또는 API를 사용하여 사용자 지정 인스턴스에서 사용자 지정 AMI를 생성합니다. 같은 리전에 있는 스택이라면 인스턴스를 계층에 추가하고 사용자 지정 AMI를 지정하여 사용자 지정 AMI를 사용할 수 있습니다. 사용자 지정 AMI를 사용하는 인스턴스를 생성하는 방법에 대한 자세한 정보는 계층에 인스턴스 추가를 참조하세요.

참고

기본적으로 AWS OpsWorks Stacks는 부팅 시 모든 Amazon Linux 업데이트를 설치하여 최신 릴리스를 제공합니다. 또한 Amazon Linux는 약 6개월마다 상당한 변경이 포함된 새 버전을 릴리스합니다. 기본적으로 Amazon Linux를 기반으로 한 사용자 지정 AMI는 새 버전이 릴리스될 경우 자동으로 업데이트됩니다. 권장되는 방법은 사용자 지정 AMI를 특정 Amazon Linux 버전에 고정시키는 것입니다. 그러면 새 버전 테스트를 마칠 때까지 업데이트를 연기할 수 있습니다. 자세한 내용은 내 AMI를 특정 버전으로 고정시키려면 어떻게 해야 합니까?를 참조하세요.

Amazon EC2를 사용하여 사용자 지정 AMI를 생성합니다.

사용자 지정 AMI를 생성하는 가장 간단한 방법이자 Windows AMI의 유일한 옵션은 Amazon EC2 콘솔 또는 API를 사용하여 전체 작업을 수행하는 것입니다. 다음 단계에 대한 세부 정보는 자체 AMI 생성을 참조하세요.

Amazon EC2 콘솔 또는 API를 사용해 사용자 지정 AMI를 생성하려면
  1. AWS OpsWorks Stacks 지원 AMI 64비트 버전을 사용하여 인스턴스를 생성합니다.

  2. 1단계에서 생성한 인스턴스를 구성하고 패키지를 설치하는 등 사용자 지정합니다. 설치하는 모든 항목이 AMI를 기반으로 모든 인스턴스에서 재현되므로, 특정 인스턴스에만 설치해야 하는 항목을 지금 설치해서는 안 됩니다.

  3. 인스턴스를 중지하고 사용자 지정 AMI를 생성합니다.

AWS OpsWorks 스택 인스턴스에서 사용자 지정 Linux AMI 생성

사용자 지정된 AWS OpsWorks Stacks Linux 인스턴스를 사용하여 AMI를 생성하려면 에서 OpsWorks 생성한 모든 Amazon EC2 인스턴스에는 고유한 ID가 포함되어 있다는 점에 유의하십시오. 이러한 인스턴스에서 생성되는 사용자 지정 AMI에는 해당 자격 증명이 포함되며, 이 AMI에 기반하는 모든 인스턴스는 동일한 자격 증명을 갖습니다. 사용자 지정 AMI에 기반하는 인스턴스가 고유 자격 증명을 가지도록 하려면 AMI 생성 전에 사용자 지정 인스턴스에서 자격 증명을 제거해야 합니다.

AWS OpsWorks Stacks 인스턴스에서 사용자 지정 AMI를 만들려면
  1. Linux 스택을 생성하고 계층을 하나 이상 추가하여 사용자 지정된 인스턴스의 구성을 정의합니다. 적절히 사용자 지정된 내장 계층은 물론 완전히 사용자 지정된 계층을 사용할 수 있습니다. 자세한 정보는 스택 사용자 지정 AWS OpsWorks을 참조하세요.

  2. 레이어를 편집하고 AutoHealing 비활성화합니다.

  3. 계층에 원하는 Linux 배포판이 설치된 인스턴스를 추가하고 시작합니다. Amazon EBS 지원 인스턴스를 사용하는 것이 좋습니다. 인스턴스의 세부 정보 페이지를 열고 나중을 위해 인스턴스의 Amazon EC2 ID를 기록해 둡니다.

  4. 인스턴스가 온라인 상태이면 SSH를 사용하여 로그인하고 인스턴스 운영 체제에 따라 다음 네 단계 중 하나를 수행합니다.

  5. Chef 11 또는 Chef 12 스택의 Amazon Linux 인스턴스나 Chef 11 스택의 Red Hat 엔터프라이즈 Linux 7 인스턴스를 보려면 다음과 같이 하세요.

    1. sudo /etc/init.d/monit stop

    2. sudo /etc/init.d/opsworks-agent stop

    3. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /etc/chef

      참고

      Chef 12 스택의 인스턴스에서는 이 명령에 다음 두 폴더를 추가합니다.

      • /var/chef

      • /opt/chef

    4. sudo rpm -e opsworks-agent-ruby

    5. sudo rpm -e chef

  6. Chef 12 스택의 Ubuntu 16.04 LTS 또는 18.04 LTS 인스턴스를 보려면 다음과 같이 하세요.

    1. sudo systemctl stop opsworks-agent

    2. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /var/chef /opt/chef /etc/chef

    3. sudo apt-get -y remove chef

    4. sudo dpkg -r opsworks-agent-ruby

    5. systemctl stop apt-daily.timer

    6. systemctl stop apt-daily-upgrade.timer

    7. rm /var/lib/systemd/timers/stamp-apt-daily.timer

    8. rm /var/lib/systemd/timers/stamp-apt-daily-upgrade.timer

  7. Chef 12 스택에서 지원되는 기타 Ubuntu 버전을 보려면 다음과 같이 하세요.

    1. sudo /etc/init.d/monit stop

    2. sudo /etc/init.d/opsworks-agent stop

    3. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /var/chef /opt/chef /etc/chef

    4. sudo apt-get -y remove chef

    5. sudo dpkg -r opsworks-agent-ruby

  8. Chef 12 스택의 Red Hat 엔터프라이즈 Linux 7 인스턴스를 보려면 다음과 같이 하세요.

    1. sudo systemctl stop opsworks-agent

    2. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /etc/chef /var/chef

    3. sudo rpm -e opsworks-agent-ruby

    4. sudo rpm -e chef

  9. 이 단계는 인스턴스 유형에 따라 다릅니다.

  10. AWS OpsWorks Stacks 콘솔로 돌아가서 스택에서 인스턴스를 삭제하여 스택을 정리하십시오.

사용자 지정 Windows AMI 생성

다음 절차는 Windows Server 2022 Base 사용자 지정 AMI를 생성합니다. Amazon EC2 관리 콘솔에서 다른 Windows 서버 운영 체제를 선택할 수 있습니다.

중요

현재는 영어 - 미국 (en-US) 이외의 시스템 UI 언어를 사용하는 Windows 기반 인스턴스에는 AWS OpsWorks AWS OpsWorks Stacks 에이전트를 설치할 수 없으며 스택도 관리할 수 없습니다.

Sysprep을 사용하여 사용자 지정 Windows AMI 생성

Sysprep을 사용하여 사용자 지정 Windows AMI를 생성하면 일반적으로 인스턴스 시작은 느리지만 프로세스는 더 깔끔합니다. 로 만든 이미지로 만든 인스턴스를 처음 시작하는 경우 Sysprep 활동, 재시작, 스택 프로비저닝, 설정 및 구성을 포함한 첫 번째 AWS OpsWorks Stacks 실행 등으로 인해 시간이 더 Sysprep 걸립니다. AWS OpsWorks Amazon EC2 콘솔에서 사용자 지정 Windows AMI 생성 단계를 완료하세요.

Sysprep으로 사용자 지정 Windows AMI를 생성하려면
  1. Amazon EC2 콘솔에서 인스턴스 시작을 선택합니다.

  2. Microsoft Windows Server 2022 Base를 찾은 다음 선택을 선택합니다.

  3. 원하는 인스턴스 유형을 선택하고 [인스턴스 세부 정보 구성]을 선택합니다. 머신 이름, 스토리지 및 보안 그룹 설정 등을 비롯하여 AMI에 대한 구성을 변경합니다. 시작을 선택합니다.

  4. 인스턴스 부팅 프로세스가 끝나면 암호를 얻은 다음 Windows 원격 데스크탑 연결 창에서 인스턴스에 연결합니다.

  5. Windows 시작 화면에서 [Start] 를 선택한 다음, 결과에 EC2 콘솔이 ec2configservice 표시될 때까지 입력을 시작합니다. ConfigServiceSettings 콘솔을 엽니다.

  6. 일반 탭에서 UserData 실행 활성화 확인란이 채워져 있는지 확인합니다. 이 옵션은 필수는 아니지만 AWS OpsWorks Stacks에서 에이전트를 설치하는 데 필요합니다. Sysprep 인스턴스의 컴퓨터 이름 설정... 확인란 선택을 취소합니다. 이 옵션을 선택하면 AWS OpsWorks Stacks와 함께 재시작 루프가 발생할 수 있기 때문입니다.

  7. 이미지 탭에서 관리자 암호무작위으로 설정하여 사용자가 SSH 키를 사용하여 가져올 수 있는 암호를 Amazon EC2에서 자동으로 생성하도록 하거나 지정로 설정하여 고유한 암호를 지정하도록 합니다. Sysprep은(는) 이 설정을 저장합니다. 고유한 암호를 지정한 경우 편리한 위치에 암호를 저장해 둡니다. [기존 항목 유지]는 선택하지 않는 것이 좋습니다.

  8. [적용]을 선택한 다음 [Sysprep과 함께 종료]를 선택합니다. 취소를 확인하라는 메시지가 나타나면 []를 선택합니다.

  9. 인스턴스가 중지되면 Amazon EC2 콘솔의 인스턴스 목록에서 인스턴스를 마우스 오른쪽 버튼으로 클릭하여 이미지를 선택한 다음 이미지 생성을 선택합니다.

  10. [이미지 생성] 페이지에서 이미지의 이름과 설명을 입력하고 볼륨 구성을 지정합니다. 모두 마쳤으면 [이미지 생성]을 선택합니다.

  11. [이미지] 페이지를 열고 이미지의 상태가 [보류 중] 단계에서 [사용 가능]으로 변경될 때까지 기다립니다. 이제 새 AMI를 사용할 준비가 되었습니다.

Sysprep 없이 사용자 지정 Windows AMI 생성

Amazon EC2 콘솔에서 사용자 지정 Windows AMI 생성 단계를 완료하세요.

Sysprep을 사용하지 않고 사용자 지정 Windows AMI를 생성하려면
  1. Amazon EC2 콘솔에서 인스턴스 시작을 선택합니다.

  2. Microsoft Windows Server 2022 Base를 찾은 다음 선택을 선택합니다.

  3. 원하는 인스턴스 유형을 선택하고 [인스턴스 세부 정보 구성]을 선택합니다. 머신 이름, 스토리지 및 보안 그룹 설정 등을 비롯하여 AMI에 대한 구성을 변경합니다. 시작을 선택합니다.

  4. 인스턴스 부팅 프로세스가 끝나면 암호를 얻은 다음 Windows 원격 데스크탑 연결 창에서 인스턴스에 연결합니다.

  5. 인스턴스에서 C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml을 열고 다음 두 가지 설정을 변경한 다음 이 파일을 저장한 후 닫습니다.

    • Ec2SetPassword~Enabled

    • Ec2HandleUserData~Enabled

  6. 원격 데스크톱 세션의 연결을 끊은 다음 Amazon EC2 콘솔로 돌아갑니다.

  7. 인스턴스 목록에서 인스턴스를 선택합니다.

  8. 인스턴스가 중지되면 Amazon EC2 콘솔의 인스턴스 목록에서 인스턴스를 마우스 오른쪽 버튼으로 클릭하여 이미지를 선택한 다음 이미지 생성을 선택합니다.

  9. [이미지 생성] 페이지에서 이미지의 이름과 설명을 입력하고 볼륨 구성을 지정합니다. 모두 마쳤으면 [이미지 생성]을 선택합니다.

  10. [이미지] 페이지를 열고 이미지의 상태가 [보류 중] 단계에서 [사용 가능]으로 변경될 때까지 기다립니다. 이제 새 AMI를 사용할 준비가 되었습니다.

사용자 지정 Windows AMI를 사용하여 새 인스턴스 추가

이미지가 [available] 상태로 변경된 후 사용자 지정 Windows AMI에 기반하는 새 인스턴스를 생성할 수 있습니다. 운영 체제 목록에서 사용자 지정 Windows AMI 사용을 선택하면 AWS OpsWorks Stacks에 사용자 지정 AMI 목록이 표시됩니다.

사용자 지정 Windows AMI를 기반으로 새 인스턴스를 추가하려면
  1. 새 AMI를 사용할 수 있게 되면 AWS OpsWorks Stacks 콘솔로 이동하여 Windows 스택용 인스턴스 페이지를 열고 페이지 하단에 있는 + Instance를 선택하여 새 인스턴스를 추가합니다.

  2. [새로 만들기] 탭에서 [고급]를 선택합니다.

  3. [운영 체제] 드롭다운 목록에서 [사용자 지정 Windows AMI 사용]을 선택합니다.

  4. 앞서 만든 AMI를 [사용자 지정 AMI] 드롭다운 목록에서 선택한 다음 [인스턴스 추가]를 선택합니다.

이제 인스턴스를 시작하고 실행할 수 있습니다.