

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# オプション: 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 プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

を使用して新しいリポジトリを作成し AWS CodeCommit、r10k リモートコントロールリポジトリとして使用できます。このセクションの手順を完了し、CodeCommit リポジトリを操作するには、**[AWSCodeCommitReadOnly]** 管理ポリシーで提供される権限を持つユーザーが必要です。

**Topics**
+ [ステップ 1: CodeCommit を HTTPS 接続タイプのリポジトリとして使用する](#codecommit-puppet-https)
+ [ステップ 2: (オプション) SSH 接続タイプのリポジトリとして CodeCommit を使用する](#codecommit-puppet-ssh)

## ステップ 1: CodeCommit を HTTPS 接続タイプのリポジトリとして使用する
<a name="codecommit-puppet-https"></a>



1. CodeCommit コンソールに新しいリポジトリを作成します。  
![\[CodeCommit に新しいリポジトリを作成します。\]](http://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/images/opspup_cc_remote.png)

1. **[Skip]** (スキップ) を選択して Amazon SNS トピックの設定をスキップします。

1. [**Code**] (コード) ページで、[**Connect to your repository**] を選択します。

1. [**Connect to your repository**] ページで、[**HTTPS**] を [**Connection type**] として選択し、オペレーティングシステムを選択します。  
![\[CodeCommit に新しいリポジトリを作成する。\]](http://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/images/opspup_cc_connect.png)

   [**Steps to clone your repository**] 領域で、`git clone` URL は次のようになります: `https://git-codecommit.region.amazonaws.com/v1/repos/control-repo` この URL を、Puppet サーバーのセットアップに使用しやすい場所にコピーします。

1. **[Connect to your repository]** ページを閉じて、OpsWorks for Puppet Enterprise サーバーの設定に戻ります。

1. ステップ 4 でコピーした URL を、Puppet マスターセットアップウィザードの **[Configure credentials]** (認証情報を設定) ページにある **[r10k remote]** 文字列ボックスに貼り付けます。[**r10k private key**] ボックスは空のままにしておきます。Puppet マスターの作成と起動を完了します。

1. IAM コンソールで、**[AWSCodeCommitReadOnly]** ポリシーを Puppet マスターのインスタンスプロファイルロールにアタッチします。ポリシーを IAM ロールにアタッチする方法の詳細については、IAM ユーザーガイドの[「IAM ID アクセス許可の追加 (コンソール)」](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: CodeCommit を HTTPS 接続タイプのリポジトリとして使用する](#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 セッションで、次のコマンドを実行して、プライベートキーファイルの内容を Parameter Store 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. [**Permissions (アクセス許可)**] タブで、[**Attach policy (ポリシーの添付)**] を選択します。

   1. [**Search**] バーに「**AmazonSSMManagedInstanceCore**」と入力します。

   1. 検索結果の中から [**AmazonSSMManagedInstanceCore**] を選択します。

   1. **[Attach policy]** (ポリシーのアタッチ) を選択します。

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 Puppet Enterprise サーバーの分類を更新します。デフォルトでは、Puppet エージェントはノード (マスターを含む) 上で 30 分ごとに実行されます。すぐに実行するには、Puppet マスター上で手動でエージェントを実行します。エージェントを実行すると、新しいマニフェストファイルが取得されます。

   1. Puppet Enterprise コンソールへのサインイン

   1. [**分類**] を選択します。

   1. [**PE インフラストラクチャ**] を展開します。

   1. [**PE マスター**] を選択します。

   1. **設定** タブで、**[Add new class]** (新しいクラスを追加する) に **profile::codecommit** と入力します。

      `puppet-code deploy` を実行してから、新しいクラス `profile::codecommit` が表示されるまでに少し時間がかかる場合があります。表示されない場合は、このページの [**Refresh**] (更新) を選択します。

   1. [**Add class (クラスの追加)**]、[**Commit 1 change**] の順に選択します。

   1. OpsWorks for Puppet Enterprise サーバーで Puppet エージェントを手動で実行します。[**ノード**] を選択後、リスト内の該当するサーバーを選択し、[**Run Puppet**]、[**実行**] の順に選択します。

1. Puppet Enterprise コンソールで、HTTPS ではなく SSH を使用するようにリポジトリ URL を変更します。このステップで実行する設定は、OpsWorks for Puppet Enterprise の バックアップおよび復元プロセス中に保存されるため、メンテナンス作業後にリポジトリ設定を手動で変更する必要はありません。

   1. [**分類**] を選択します。

   1. [**PE インフラストラクチャ**] を展開します。

   1. [**PE マスター**] を選択します。

   1. [**設定**] タブで、`puppet_enterprise::profile::master` クラスを見つけます。

   1. `r10k_remote` パラメータの横にある **[Edit]** (編集) を選択します。

   1. リポジトリの HTTPS URL を SSH URL に置き換え、[**Commit 1 change**] を選択します。

   1. OpsWorks for Puppet Enterprise サーバーで Puppet エージェントを手動で実行します。[**ノード**] を選択後、リスト内の該当するサーバーを選択し、[**Run Puppet**]、[**実行**] の順に選択します。