

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

# 선택 사항: Puppet r10k 원격 제어 리포지토리 AWS CodeCommit 로 사용
<a name="opspup-puppet-codecommit"></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 팀에 문의하세요.

를 사용하여 새 리포지토리를 생성하고 이를 r10k 원격 제어 리포지토리로 AWS CodeCommit사용할 수 있습니다. 이 섹션의 단계를 완료하고 CodeCommit 리포지토리를 사용하려면 **AWSCodeCommitreadonly** 관리형 정책에서 제공하는 권한을 가진 사용자가 필요합니다.

**Topics**
+ [1단계: HTTPS 연결 유형에서 CodeCommit를 리포지토리로 사용](#codecommit-puppet-https)
+ [2단계: (선택 사항) SSH 연결 유형에서 CodeCommit를 리포지토리로 사용](#codecommit-puppet-ssh)

## 1단계: HTTPS 연결 유형에서 CodeCommit를 리포지토리로 사용
<a name="codecommit-puppet-https"></a>



1. CodeCommit 콘솔에서 새 리포지토리를 생성합니다.  
![\[CodeCommit에서 새 리포지토리 생성.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/opspup_cc_remote.png)

1. Amazon SNS 주제 설정을 건너뛰려면 **건너뛰기**를 선택합니다.

1. [**코드**] 페이지에서 [**리포지토리에 연결**]을 선택합니다.

1. **리포지토리에 연결 페이지**에서 **연결 유형**으로 **HTTPS**를 선택하고 운영 체제를 선택합니다.  
![\[CodeCommit에서 새 리포지토리 생성.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/opspup_cc_connect.png)

   **리포지토리를 복제하는 단계** 영역에서 `git clone` URL은 `https://git-codecommit.region.amazonaws.com/v1/repos/control-repo`와 유사해야 합니다. Puppet 서버 설정에 사용할 수 있도록 이 URL을 편리한 위치에 복사합니다.

1. **리포지토리에 연결** 페이지를 닫고 OpsWorks for Puppet Enterprise 서버 설정으로 돌아갑니다.

1. 4단계에서 복사한 URL을 Puppet 마스터 설치 마법사의 **자격 증명 구성** 페이지에 있는 **r10k 원격** 문자열 상자에 붙여넣습니다. **r10k 프라이빗 키** 상자를 비워둡니다. Puppet 마스터의 생성 및 시작을 완료합니다.

1. IAM 콘솔에서 Puppet 마스터의 인스턴스 프로파일 역할에 **AWSCodeCommitReadOnly** 정책을 연결합니다. 권한 정책을 IAM 역할에 추가하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM 자격 증명 권한 추가(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)를 참조하세요.

1. *AWS CodeCommit 사용 설명서*의 [Git 자격 증명을 사용하는 HTTPS 사용자용 설정](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html)의 단계에 따라 기존 `control-repo` 콘텐츠를 새 CodeCommit 리포지토리로 푸시하세요.

1. 이제, [스타터 키트를 사용하여 Puppet 마스터 구성](opspup-starterkit.md)의 지침에 따라 계속 진행하고 스타터 키트를 사용하여 Puppet 마스터에 코드를 배포할 수 있습니다. 다음 명령은 예제입니다.

   ```
   puppet-code deploy --all --wait --config-file .config/puppet-code.conf
   ```

## 2단계: (선택 사항) SSH 연결 유형에서 CodeCommit를 리포지토리로 사용
<a name="codecommit-puppet-ssh"></a>

SSH 키 페어 인증을 사용하도록 AWS CodeCommit r10k 원격 제어 리포지토리를 구성할 수 있습니다. 이 절차를 시작하기 전에 다음 사전 조건을 완료해야 합니다.
+ 앞의 [1단계: HTTPS 연결 유형에서 CodeCommit를 리포지토리로 사용](#codecommit-puppet-https) 단원에서 설명한 것과 같이 HTTPS 제어 리포지토리가 있는 OpsWorks for Puppet Enterprise 서버를 시작해야 합니다. 필수 구성을 Puppet 마스터에 업로드하려면 먼저 이 작업을 완료해야 합니다.
+ **AWSCodeCommitreadOnly** 관리형 정책을 사용하는 사용자가 연결되어 있는지 확인하세요. 사용자를 생성하는 방법에 대한 자세한 내용은 [IAM 사용 설명서의 AWS 계정에서 IAM 사용자 생성을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html). ** 
+ SSH 키를 생성하여 사용자와 연결합니다. *AWS CodeCommit 사용 설명서*의 [3단계: Linux, macOS 또는 Unix에서 자격 증명 구성](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html#setting-up-ssh-unixes-keys)의 `ssh-keygen`을 사용하여 퍼블릭/프라이빗 키 페어를 생성하는 방법에 대한 지침을 따르세요.

1.  AWS CLI 세션에서 다음 명령을 실행하여 프라이빗 키 파일 콘텐츠를 AWS Systems Manager 파라미터 스토어에 업로드합니다. OpsWorks for Puppet Enterprise 서버는 이 파라미터를 쿼리하여 필수 인증서 파일을 가져옵니다. *private\$1key\$1file*을 SSH 프라이빗 키 파일의 경로로 바꿉니다.

   ```
   aws ssm put-parameter --name puppet_user_pk --type String --value "`cat private_key_file`"
   ```

1. Systems Manager 파라미터 스토어 권한을 Puppet 마스터에 추가합니다.

   1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

   1. 왼쪽 탐색 창에서 **역할**을 선택합니다.

   1. **aws-opsworks-cm-ec2-role**을 선택합니다.

   1. **권한** 탭에서 **정책 연결**을 선택합니다.

   1. **검색** 창에 **AmazonSSMManagedInstanceCore**를 입력합니다.

   1. 검색 결과에서 **AmazonSSMManagedInstanceCore**를 선택합니다.

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

1. 구성 파일 매니페스트를 생성합니다. 스타터 키트에서 제공하는 `control-repo-example` 리포지토리를 사용하는 경우 예제 리포지토리에 표시된 위치에서 다음 파일을 생성합니다. 그렇지 않으면 자체적인 제어 리포지토리 구조에 따라 해당 파일을 생성합니다. *IAM\$1USER\$1SSH\$1KEY* 값을 이 절차의 사전 조건에서 생성한 SSH 키 ID로 바꿉니다.

   ```
   control-repo-example/site/profile/manifests/codecommit.pp
   ```

   ```
   class profile::codecommit {
     $configfile = @(CONFIGFILE)
         Host git-codecommit.*.amazonaws.com
         User IAM_USER_SSH_KEY
         IdentityFile /etc/puppetlabs/puppetserver/ssh/codecommit.rsa
         StrictHostKeyChecking=no
         | CONFIGFILE
   
     # Replace REGION with the correct region for your server.
     $command = @(COMMAND)
         aws ssm get-parameters \
         --region REGION \
         --names puppet_user_pk \
         --query "Parameters[0].Value" \
         --output text >| /etc/puppetlabs/puppetserver/ssh/codecommit.rsa
         | COMMAND
   
     $dirs = [
               '/opt/puppetlabs/server/data/puppetserver/.ssh',
               '/etc/puppetlabs/puppetserver/ssh',
             ]
   
     file { $dirs:
       ensure => 'directory',
       group  => 'pe-puppet',
       owner  => 'pe-puppet',
       mode   => '0750',
     }
   
     file { 'ssh-config':
       path    => '/opt/puppetlabs/server/data/puppetserver/.ssh/config',
       require => File[$dirs],
       content => $configfile,
       group   => 'pe-puppet',
       owner   => 'pe-puppet',
       mode    => '0600',
     }
   
     exec { 'download-codecommit-certificate':
       command => $command,
       require => File[$dirs],
       creates => '/etc/puppetlabs/puppetserver/ssh/codecommit.rsa',
       path    => '/bin',
       cwd     => '/etc/puppetlabs',
     }
   
     file { 'private-key-permissions':
       subscribe => Exec['download-codecommit-certificate'],
       path      => '/etc/puppetlabs/puppetserver/ssh/codecommit.rsa',
       group     => 'pe-puppet',
       owner     => 'pe-puppet',
       mode      => '0600',
     }
   }
   ```

1. 제어 리포지토리를 CodeCommit로 푸시합니다. 다음 명령을 실행하여 새 매니페스트 파일을 리포지토리로 푸시합니다.

   ```
   git add ./site/profile/manifests/codecommit.pp
   git commit -m 'Configuring for SSH connection to CodeCommit'
   git push origin production
   ```

1. 매니페스트 파일을 배포합니다. 다음 명령을 실행하여 업데이트된 구성을 OpsWorks for Puppet Enterprise 서버에 배포합니다. *STARTER\$1KIT\$1DIRECTORY*를 Puppet 구성 파일의 경로로 바꿉니다.

   ```
   cd STARTER_KIT_DIRECTORY
   
   puppet-access login --config-file .config/puppetlabs/client-tools/puppet-access.conf
   
   puppet-code deploy --all --wait \
   --config-file .config/puppet-code.conf \
   --token-file .config/puppetlabs/token
   ```

1. OpsWorks for Chef Automate 서버 분류를 업데이트합니다. 기본적으로 Puppet 에이전트는 노드(마스터 포함)에서 30분마다 실행됩니다. 기다리지 않으려면 Puppet 마스터에서 에이전트를 수동으로 실행할 수 있습니다. 에이전트를 실행하면 새 매니페스트 파일이 선택됩니다.

   1. Puppet Enterprise 콘솔에 로그인.

   1. **분류**을 선택합니다.

   1. **PE 인프라**를 확장합니다.

   1. **PE 마스터**를 선택합니다.

   1. **구성** 탭에서 **새 클래스 추가**에 **profile::codecommit**을 입력합니다.

      새 클래스인 `profile::codecommit`는 `puppet-code deploy`를 실행한 후 즉시 나타나지 않을 수 있습니다. 새 클래스가 나타나지 않으면 이 페이지에서 **새로 고침**을 선택합니다.

   1. **클래스 추가**를 선택한 다음 **커밋 1 변경**을 선택합니다.

   1. OpsWorks for Puppet Enterprise 서버에서 Puppet 에이전트를 수동으로 실행합니다. **노드**를 선택하고, 목록에서 서버를 선택한 다음, **Puppet 실행**을 선택하고, **실행**을 선택합니다.

1. Puppet Enterprise 콘솔에서 HTTPS 대신 SSH를 사용하도록 리포지토리 URL을 변경합니다. 이러한 단계에서 수행하는 구성은 OpsWorks for Puppet Enterprise 백업 및 복원 프로세스 중에 저장되므로, 유지 관리 활동 후 리포지토리 구성을 수동으로 변경할 필요가 없습니다.

   1. **분류**를 선택합니다.

   1. **PE 인프라**를 확장합니다.

   1. **PE 마스터**를 선택합니다.

   1. **구성** 탭에서 `puppet_enterprise::profile::master` 클래스를 찾습니다.

   1. `r10k_remote` 매개 변수 옆의 **편집**을 선택합니다.

   1. HTTPS URL을 해당 리포지토리의 SSH URL로 바꾼 다음, **커밋 1 변경**을 선택합니다.

   1. OpsWorks for Puppet Enterprise 서버에서 Puppet 에이전트를 수동으로 실행합니다. **노드**를 선택하고, 목록에서 서버를 선택한 다음, **Puppet 실행**을 선택하고, **실행**을 선택합니다.