

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

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

以下の手順では、既存の Puppet Enterprise サーバーを Amazon EC2 に移行する方法を説明します。これは、OpsWorks 以外の設定管理ニーズに対応するために Puppet Enterprise を引き続き使用したい場合です。

**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 マネジメントコンソール し、[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 エンタープライズバージョニング (例えば 2019.8.10) が表示されます。この値を保存してください。

次のステップでは、SSH または Systems Manager を使用します。

## ステップ 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.  次のコマンドを実行して、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 または Systems Manager セッションを終了できます。

## ステップ 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` です。  | 
|  [**Storage (ストレージ)**]  |  少なくとも 120 GB。  | 
|  **IAM インスタンスプロファイル**  |  [ステップ 2: OpsWorks for Puppet Enterprise サーバーの詳細を取得してください](#opspup-migrate-ec2-details) のステップ 2 からの `InstanceProfileArn` です。  | 

Elastic IP を作成して新しいインスタンスにアタッチする場合は、新しいインスタンスのインスタンス ID をコピーして、[(オプション) ステップ 4.1: Elastic IP を作成してアタッチしてください](#opspup-migrate-ec2-elastic-ip) のステップを完了します。

### (オプション) ステップ 4.1: Elastic IP を作成してアタッチしてください
<a name="opspup-migrate-ec2-elastic-ip"></a>

Elastic IP アドレスを使用すると、アドレスをアカウント内の別のインスタンスに迅速に再マッピングすることで、インスタンスやソフトウェアの障害をマスクできます。

**Elastic IP アドレスを作成して関連付けるには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) で Amazon EC2 コンソールを開きます。

1. **伸縮性 IPs** を選択してください。

1. **[Elastic IP アドレスの割り当て]** を選択してください。

1. [**Elastic IP アドレスの割り当て**] ページから、**割り当てる** を選択します。パブリック IPv4 アドレスが作成されます。

1. **割り当てられた IPv4 アドレス** をコピーします。

1. **アクション** で、**Elastic 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 または Systems Manager セッションは、次のステップのために開いたままにしておくことができます。

## ステップ 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
```

復元された EC2 インスタンスの Puppet コンソールには、インスタンスの https://*パブリック IPv4* でアクセスできます。パブリック IPv4 DNS は、 EC2 コンソールのインスタンスの詳細ページで確認できます。ログイン認証情報は、OpsWorks for Puppet Enterprise サーバーにアクセスするために使用する認証情報と同じです。

SSH または Systems Manager セッションは、次のステップのために開いたままにしておくことができます。

## ステップ 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 または Systems Manager セッションは、次のステップのために開いたままにしておくことができます。

## ステップ 8: ノードを移行してください
<a name="opspup-migrate-ec2-nodes"></a>

OpsWorks for Puppet Enterprise サーバーでは、次の 2 種類のドメインがサポートされています。
+ BYODC (Bring Your Own Domain and Certificate)
+ OpsWorks のエンドポイント

### ステップ 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) が含まれます。Puppet Forge ウェブサイト上のモジュールは、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 または Session Manager セッションからログアウトできます。

#### ステップ 8.2.2: アンインストーラーをダウンロードしてノードで実行してください
<a name="opspup-migrate-ec2-uninstall-download"></a>

SSH を使用してノードに接続します。ノードが EC2 インスタンスの場合は、 SSH の代わりに EC2 コンソールの Session Manager を使用できます。

```
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 または Systems Manager セッションは、次のステップのために開いたままにしておくことができます。

#### ステップ 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 または Session Manager セッションを開いたままにしておくことができます。

##### ステップ 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 コンソールまたは を使用して AWS CLI 、OpsWorks for Puppet Enterprise サーバーを削除できます。

**OpsWorks コンソールを使用してサーバーを削除するために**

1. にサインイン AWS マネジメントコンソール し、[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
```