

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

# OpsWorks for Puppet Enterprise 서버를 Amazon Elastic Compute Cloud(Amazon EC2)로 마이그레이션하는 방법
<a name="opspup-migrate-ec2"></a>

**중요**  
이 AWS OpsWorks for Puppet Enterprise 서비스는 2024년 3월 31일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

아래 지침은 OpsWorks 외부에서 구성 관리 요구 사항에 Puppet Enterprise를 계속 사용하려는 경우 기존 Puppet Enterprise 서버를 Amazon EC2로 마이그레이션하는 방법을 설명합니다.

**Topics**
+ [1단계: Puppet에 문의하여 라이선스 구매](#opspup-migrate-ec2-contact)
+ [2단계: OpsWorks for Puppet Enterprise 서버에 대한 세부 정보 가져오기](#opspup-migrate-ec2-details)
+ [3단계: OpsWorks for Puppet Enterprise 서버의 백업 만들기](#opspup-migrate-ec2-backup)
+ [4단계: 새 EC2 인스턴스 시작](#opspup-migrate-ec2-launch)
+ [5단계: 새 EC2 인스턴스에 Puppet Enterprise를 설치합니다.](#opspup-migrate-ec2-install-puppet)
+ [6단계: 새 EC2 인스턴스에서 백업 복원](#opspup-migrate-ec2-restore)
+ [7단계: Puppet 라이선스 구성](#opspup-migrate-ec2-configure-license)
+ [8단계: 노드 마이그레이션](#opspup-migrate-ec2-nodes)
+ [9단계: OpsWorks for Puppet Enterprise 서버를 삭제합니다](#opspup-migrate-ec2-delete-server)

## 1단계: Puppet에 문의하여 라이선스 구매
<a name="opspup-migrate-ec2-contact"></a>

 서버를 EC2로 마이그레이션하는 경우 새 인스턴스에는 Puppet 라이선스가 제공되지 않습니다. 라이선스 키를 구입하려면 [Puppet 웹 사이트](https://www.puppet.com/docs/pe/2021.1/purchasing_and_installing_a_license_key.html)의 지침을 따르세요.

## 2단계: OpsWorks for Puppet Enterprise 서버에 대한 세부 정보 가져오기
<a name="opspup-migrate-ec2-details"></a>

 OpsWorks for Puppet Enterprise 서버를 찾아서 저장합니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) Amazon S3 콘솔을 엽니다.

   OpsWorks for Puppet Enterprise 서버의 기존 Amazon S3 버킷 이름을 복사합니다. 버킷 이름의 형식은 다음과 같습니다. `aws-opsworks-cm-server-name-random-string` 

1. **aws opsworks-cm describe-servers** 명령을 실행하여 OpsWorks for Puppet Enterprise 서버를 구성합니다.

   ```
   aws opsworks-cm describe-servers \
      --server-name server-name \
      --region region
   ```

   응답의 `InstanceType`, `KeyPair`, `SubnetIds`, `SecurityGroupIds`. `InstanceProfileArn` 및 `Endpoint` 값을 저장합니다.

1. SSH를 사용하여 기존 OpsWorks for Puppet Enterprise 서버에 연결합니다. EC2 콘솔에서 SSH 대신 세션 관리자를 사용할 수 있습니다.

   다음 명령을 실행합니다.

   ```
   rpm -qa | grep opsworks-cm-puppet-enterprise | cut -d '-' -f 5
   ```

   응답은 Puppet Enterprise 버전(예: 2019.8.10)을 제공합니다. 이 값을 저장합니다.

다음 단계에서 SSH 또는 세션 관리자를 사용합니다.

## 3단계: OpsWorks for Puppet Enterprise 서버의 백업 만들기
<a name="opspup-migrate-ec2-backup"></a>

1.  다음 명령을 실행하여 로컬 백업을 만드세요.

   ```
   mkdir /tmp/puppet-backup/
   sudo /opt/puppetlabs/bin/puppet-backup create --dir=/tmp/puppet-backup/
   ```

1.  다음 명령을 실행하여 백업 이름을 저장합니다.

   ```
   ls /tmp/puppet-backup/
   PUPPET_BACKUP=$(ls /tmp/puppet-backup/)
   ```

1.  다음 명령을 실행하여 Amazon S3 버킷에 백업을 업로드합니다. *S3-버킷을* [2단계: OpsWorks for Puppet Enterprise 서버에 대한 세부 정보 가져오기](#opspup-migrate-ec2-details)의 1단계 값으로 바꿉니다.

   ```
   aws s3 cp /tmp/puppet-backup/PUPPET_BACKUP s3://S3_Bucket/tmp/puppet-backup/
   ```

   `PUPPET_BACKUP`및 `S3_BUCKET` 값을 저장합니다. 새 EC2 인스턴스로 해당 값을 가져옵니다.

SSH 또는 세션 관리자 세션을 종료할 수 있습니다.

## 4단계: 새 EC2 인스턴스 시작
<a name="opspup-migrate-ec2-launch"></a>

OpsWorks for Puppet Enterprise 서버와 동일한 구성을 사용하여 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) EC2 콘솔에서 [새 EC2 인스턴스를 시작](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)합니다.


| 파라미터 이름 | 값 | 
| --- | --- | 
|  **OS**  |  Amazon Linux 2  | 
|  **인스턴스 유형**  |  [2단계: OpsWorks for Puppet Enterprise 서버에 대한 세부 정보 가져오기](#opspup-migrate-ec2-details)의 2단계의 `InstanceType` 값입니다.  | 
|  **키 페어 이름**  |  [2단계: OpsWorks for Puppet Enterprise 서버에 대한 세부 정보 가져오기](#opspup-migrate-ec2-details)의 2단계의 `KeyPair` 값입니다.  | 
|  **VPC**  |  [2단계: OpsWorks for Puppet Enterprise 서버에 대한 세부 정보 가져오기](#opspup-migrate-ec2-details)의 2단계에서 가져온 `SubnetIds`의 VPC입니다.  | 
|  **서브넷**  |  [2단계: OpsWorks for Puppet Enterprise 서버에 대한 세부 정보 가져오기](#opspup-migrate-ec2-details)의 2단계에서 가져온 `SubnetIds`.  | 
|  **기존 보안 그룹 선택** -> **공통 보안 그룹**   |  [2단계: OpsWorks for Puppet Enterprise 서버에 대한 세부 정보 가져오기](#opspup-migrate-ec2-details)의 2단계에서 가져온 `SecurityGroupIds`.  | 
|  **스토리지**  |  최소 120GB.  | 
|  **IAM 인스턴스 프로파일**  |  [2단계: OpsWorks for Puppet Enterprise 서버에 대한 세부 정보 가져오기](#opspup-migrate-ec2-details)의 2단계에서 가져온 `InstanceProfileArn`.  | 

탄력적 IP를 생성하여 새 인스턴스에 연결하려는 경우 새 인스턴스의 인스턴스 ID를 복사하고 [(선택 사항) 4.1단계: 탄력적 IP 생성 및 연결](#opspup-migrate-ec2-elastic-ip)의 단계를 완료하세요.

### (선택 사항) 4.1단계: 탄력적 IP 생성 및 연결
<a name="opspup-migrate-ec2-elastic-ip"></a>

탄력적 IP 주소를 사용하면 주소를 계정의 다른 인스턴스에 신속하게 다시 매핑하여 인스턴스나 소프트웨어의 오류를 마스킹할 수 있습니다.

**탄력적 IP 주소를 생성 및 연결하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) Amazon EC2 콘솔을 엽니다.

1. **탄력적 IP**를 선택합니다.

1. **탄력적 IP 주소 할당**를 선택합니다.

1. **탄력적 IP 주소 할당** 페이지에서 **할당**을 선택합니다. 그러면 퍼블릭 IPv4 주소가 생성됩니다.

1. **할당된 IPv4 주소**를 복사합니다.

1. **작업**에서 **탄력적 IP 주소 연결**을 선택합니다.

1. **인스턴스**의 경우, 새 인스턴스의 인스턴스 ID를 입력합니다.

1. **** 연결을 선택합니다.

## 5단계: 새 EC2 인스턴스에 Puppet Enterprise를 설치합니다.
<a name="opspup-migrate-ec2-install-puppet"></a>

SSH를 사용하여 새 EC2 인스턴스에 연결합니다. EC2 콘솔에서 SSH 대신 세션 관리자를 사용할 수 있습니다.

```
# switch to sudo user
sudo -i

# Setup environment variables
PUPPET_ENTERPRISE_VERSION=Puppet Enterprise version from step 2.3
hostname Public IPv4 DNS or Custom Domain if available

# Install Puppet Enterprise
curl -JLO https://pm.puppetlabs.com/puppet-enterprise/$PUPPET_ENTERPRISE_VERSION/puppet-enterprise-$PUPPET_ENTERPRISE_VERSION-el-7-x86_64.tar.gz
tar -xf puppet-enterprise-$PUPPET_ENTERPRISE_VERSION-el-7-x86_64.tar.gz

./puppet-enterprise-$PUPPET_ENTERPRISE_VERSION-el-7-x86_64/puppet-enterprise-installer
```

다음 단계를 위해 SSH 또는 세션 관리자 세션을 열어 둘 수 있습니다.

## 6단계: 새 EC2 인스턴스에서 백업 복원
<a name="opspup-migrate-ec2-restore"></a>

```
# Setup environment variables
S3_BUCKET=S3 bucket name from step 2.1
PUPPET_BACKUP=Puppet backup file name from step 3.2

# download backup
aws s3 cp s3://$S3_BUCKET/tmp/puppet-backup/$PUPPET_BACKUP

# Prepare Puppet Enterprise backup to remove OpsWorks metadata
mkdir output
tar -xf $PUPPET_BACKUP -C output/
cd output/
rm -f opt/puppetlabs/facter/facts.d/opsworks.json
tar -cf ../$PUPPET_BACKUP *
cd ..
rm -rf output/

# Restore from backup
PATH=$PATH:/opt/puppetlabs/puppet/bin/
puppet-backup restore $PUPPET_BACKUP
puppet agent -t
```

https://*인스턴스의 퍼블릭 IPv4*에서 복원된 EC2 인스턴스의 Puppet 콘솔에 액세스할 수 있습니다. EC2 콘솔의 인스턴스 세부 정보 페이지에서 퍼블릭 IPv4 DNS를 찾을 수 있습니다. 로그인 자격 증명은 OpsWorks for Puppet Enterprise 서버에 액세스할 때 사용하는 것과 동일한 자격 증명입니다.

다음 단계를 위해 SSH 또는 세션 관리자 세션을 열어 둘 수 있습니다.

## 7단계: Puppet 라이선스 구성
<a name="opspup-migrate-ec2-configure-license"></a>

[Puppet 웹 사이트](https://www.puppet.com/docs/pe/2021.1/purchasing_and_installing_a_license_key.html#install_a_license_key)의 단계에 따라 라이선스를 구성하세요.

다음 단계를 위해 SSH 또는 세션 관리자 세션을 열어 둘 수 있습니다.

## 8단계: 노드 마이그레이션
<a name="opspup-migrate-ec2-nodes"></a>

OpsWorks for Puppet Enterprise 서버에서 지원하는 도메인에는 두 가지 유형이 있습니다.
+ BYODC(자체 도메인 및 인증서 사용)
+ OpsWorks Endpoint

### 8.1단계: BYODC의 경우(자체 도메인 및 인증서 사용)
<a name="opspup-migrate-ec2-nodes-byodc"></a>

이러한 노드의 경우 DNS 공급자의 사용자 지정 도메인이 새 EC2 인스턴스의 퍼블릭 IPv4 DNS 또는 퍼블릭 IPv4 주소를 가리키도록 지정하기만 하면 됩니다.

### 8.2단계: OpsWorks 엔드포인트의 경우
<a name="opspup-migrate-ec2-nodes-endpoint"></a>

OpsWorks 엔드포인트의 경우 Puppet 설명서에서는 노드에서 Puppet 에이전트를 [제거](https://www.puppet.com/docs/pe/2019.8/uninstalling.html#uninstall_agents)한 다음 새로 복원된 Puppet Enterprise 서버를 사용하여 Puppet 에이전트를 [설치](https://www.puppet.com/docs/pe/2019.8/installing_agents.html)할 것을 권장합니다.

**참고**  
 Puppet에는 에이전트 노드를 이동하는 자동 절차가 없지만 Puppet 커뮤니티 구성원이 자동화된 노드 마이그레이션을 수행하기 위해 [Puppet Forge 웹 사이트](https://forge.puppet.com/)에 게시한 몇 가지 모듈이 있습니다. 이러한 모듈에는 [https://forge.puppet.com/modules/coreymbe/pe_migrate/readme](https://forge.puppet.com/modules/coreymbe/pe_migrate/readme) 모듈과 다른 작성자의 두 번째 [마이그레이션 모듈](https://forge.puppet.com/modules/ffalor/migrate)이 포함됩니다. Forge 모듈에 명시적으로 명시되어 있지 않는 한 Puppet Forge 웹 사이트의 모듈은 **Puppet 또는 OpsWorks에서 지원하지 않습니다**. 이러한 모듈은 주의해서 사용하고 널리 사용하기 전에 테스트해 보는 것이 좋습니다.

다음 섹션에서는 Linux 인스턴스에서 Puppet 에이전트를 제거하고 다시 설치하는 단계를 제공합니다.

**Topics**
+ [8.2.1단계: Puppet 서버에서 제거 프로그램 복사](#opspup-migrate-ec2-uninstall-copy)
+ [8.2.2단계: 제거 프로그램을 다운로드하고 노드에서 실행](#opspup-migrate-ec2-uninstall-download)
+ [8.2.3단계: 노드에 Puppet 에이전트 재설치](#opspup-migrate-ec2-reinstall-agent)

#### 8.2.1단계: Puppet 서버에서 제거 프로그램 복사
<a name="opspup-migrate-ec2-uninstall-copy"></a>

에이전트를 제거하기 전에 노드의 IAM 인스턴스 프로필이 S3 ReadOnly 권한을 제공하는지 확인하세요.

다음 명령을 실행하여 제거 프로그램을 Puppet 서버에서 S3 버킷으로 복사합니다.

```
aws s3 cp \
   /opt/puppetlabs/bin/puppet-enterprise-uninstaller \
   s3://$S3_BUCKET/tmp/puppet-enterprise-uninstaller
```

명령을 실행한 후 Puppet 서버의 SSH 또는 세션 관리자 세션에서 로그아웃할 수 있습니다.

#### 8.2.2단계: 제거 프로그램을 다운로드하고 노드에서 실행
<a name="opspup-migrate-ec2-uninstall-download"></a>

SSH를 사용하여 노드에 연결합니다. 노드가 EC2 인스턴스인 경우 SSH 대신 EC2 콘솔에서 세션 관리자를 사용할 수 있습니다.

```
sudo -i

S3_BUCKET=aws-opsworks-cm-abcdefg-uuhtyn6messn
aws s3 cp s3://$S3_BUCKET/tmp/puppet-enterprise-uninstaller /opt/puppetlabs/bin/
chmod 700 /opt/puppetlabs/bin/puppet-enterprise-uninstaller
/opt/puppetlabs/bin/puppet-enterprise-uninstaller
```

다음 단계를 위해 SSH 또는 세션 관리자 세션을 열어 둘 수 있습니다.

#### 8.2.3단계: 노드에 Puppet 에이전트 재설치
<a name="opspup-migrate-ec2-reinstall-agent"></a>

다음 단계를 완료하여 Puppet 에이전트를 노드에 다시 설치합니다.

**Topics**
+ [8.2.3.1단계: 올바른 구성으로 Puppet 에이전트 설치](#w2ab1b7c41c23b9c15b7)
+ [8.2.3.2단계: Puppet 콘솔에서 인증서 수락](#w2ab1b7c41c23b9c15b9)
+ [8.2.3.3단계: 노드를 Puppet Enterprise 서버에 체크인합니다.](#w2ab1b7c41c23b9c15c11)

##### 8.2.3.1단계: 올바른 구성으로 Puppet 에이전트 설치
<a name="w2ab1b7c41c23b9c15b7"></a>

다음 명령을 실행하여 Puppet 에이전트를 설치합니다.

```
curl -k https://Public_IPv4_DNS:8140/packages/current/install.bash | bash
```

8.2.2.3단계에서 SSH 또는 세션 관리자 세션을 계속 열어 둘 수 있습니다.

##### 8.2.3.2단계: Puppet 콘솔에서 인증서 수락
<a name="w2ab1b7c41c23b9c15b9"></a>

1. `https://Public_IPv4_DNS`에서 Puppet 서버 콘솔로 이동합니다.

1. **인증서**를 선택한 다음 **서명되지 않은 인증서**를 선택합니다.

1. **수락**을 선택하여 Puppet 에이전트의 인증서에 서명합니다.

##### 8.2.3.3단계: 노드를 Puppet Enterprise 서버에 체크인합니다.
<a name="w2ab1b7c41c23b9c15c11"></a>

노드에서 다음 명령을 실행하여 서버에 체크인합니다.

```
puppet agent -t
```

이제 Puppet 서버의 콘솔에 해당 노드가 표시될 것입니다.

## 9단계: OpsWorks for Puppet Enterprise 서버를 삭제합니다
<a name="opspup-migrate-ec2-delete-server"></a>

OpsWorks 콘솔 또는를 사용하여 OpsWorks for Puppet Enterprise 서버를 AWS CLI 삭제할 수 있습니다.

**OpsWorks 콘솔을 사용하여 서버를 삭제하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/opsworks/](https://console.aws.amazon.com/opsworks/) OpsWorks 콘솔을 엽니다.

1. 탐색 창에서 **Puppet Enterprise 서버**를 선택합니다.

1. **Puppet Enterprise 서버** 페이지에서 백업하려는 서버를 선택합니다.

1. **작업**에서 **Puppet Enterprise 서버 삭제**를 선택합니다.

**를 사용하여 서버를 삭제하려면 AWS CLI**

다음 명령을 실행합니다.

```
aws opsworks-cm delete-server \
   --server-name server-name \
   --region region
```