

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Pupp OpsWorks et 企业版故障排除
<a name="troubleshoot-opspup"></a>

**重要**  
该 AWS OpsWorks for Puppet Enterprise 服务于 2024 年 3 月 31 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

本主题包含 Puppet Enterprise 问题的一些常见 OpsWorks 问题以及这些问题的建议解决方案。

**Topics**
+ [一般故障排除技巧](#w2ab1b7c45b9)
+ [针对特定错误进行故障排除](#tshooterrors-puppet)
+ [其他帮助和支持](#tshooterrors-puppet-support)

## 一般故障排除技巧
<a name="w2ab1b7c45b9"></a>

如果您无法创建或使用 Puppet Master，可查看错误消息或日志来帮助您对问题进行故障排除。下列任务描述了在您排除 Puppet Master 问题故障时通常应从哪些方面入手。有关特定错误和解决方案的信息，请参阅本主题的[针对特定错误进行故障排除](#tshooterrors-puppet)部分。
+ 使用 f OpsWorks or Puppet Enterprise 控制台在 Puppet Master 无法启动时查看错误消息。在 Puppet Master 属性页面上，与服务器启动和运行相关的错误消息将显示在页面顶部。 OpsWorks 用于创建 Puppet Master 的 Puppet Enterprise 或 Amazon EC2 服务可能会出现错误。 CloudFormation在属性页面上，您还可查看正在运行的服务器上发生的事件，其中可能会包含故障事件消息。
+ 要帮助解决 EC2 问题，请使用 SSH 连接到服务器的实例，然后查看日志。 EC2 实例日志存储在`/var/log/aws/opsworks-cm`目录中。这些日志会捕获 Puppet Enterprise 启动 Puppet Master 时的 OpsWorks 命令输出。

## 针对特定错误进行故障排除
<a name="tshooterrors-puppet"></a>

**Topics**
+ [服务器处于**连接丢失**状态](#tshooterrors-puppet-connection-lost)
+ [服务器创建失败，并返回“requested configuration is currently not supported”消息](#w2ab1b7c45c11b6)
+ [无法创建服务器的 Amazon EC2 实例](#w2ab1b7c45c11b8)
+ [服务角色错误阻止服务器创建](#w2ab1b7c45c11c10)
+ [超出弹性 IP 地址限制](#w2ab1b7c45c11c12)
+ [无人参与节点关联失败](#w2ab1b7c45c11c14)
+ [系统维护失败](#tshooterrors-puppet-maintenance-fails)

### 服务器处于**连接丢失**状态
<a name="tshooterrors-puppet-connection-lost"></a>

**问题：**服务器的状态显示为**连接丢失**。

**原因：**这种情况最常发生在外部实体对适用于 Pupp OpsWorks et Enterprise OpsWorks 的服务器或其支持资源进行更改时。 OpsWorks 无法连接到处于**连接中断**状态的 Puppet Enterprise 服务器来处理维护任务，例如创建备份、应用操作系统补丁或更新 Puppet。因此，您的服务器可能缺少重要更新，容易受到安全问题的影响，或者无法按预期运行。

**解决方案：**尝试以下步骤来恢复服务器的连接。

1. 请确保您的服务角色具有所有必需的权限。

   1. 在服务器的**设置**页面上，在**网络和安全**中，选择服务器正在使用的服务角色的链接。这将将服务角色打开以供在 IAM 控制台中查看。

   1. 在**权限**选项卡上，确认 `AWSOpsWorksCMServiceRole` 是否在**权限策略**列表中。如果未列出该托管策略，请手动将 `AWSOpsWorksCMServiceRole` 托管策略添加到角色中。

   1. 在**信任关系**选项卡上，验证服务角色是否具有信任 `opsworks-cm.amazonaws.com` 服务代表您代入角色的信任策略。有关如何对角色使用信任策略的更多信息，请参阅[修改角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html)或 AWS 安全博客文章《[如何在 IAM 角色中使用信任策略》](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/)。

1. 请确保您的实例配置文件具有所有必需的权限。

   1. 在服务器的**设置**页面上，在**网络和安全**中，选择服务器正在使用的实例配置文件的链接。这将打开实例配置文件以在 IAM 控制台中查看。

   1. 在**权限**选项卡上，确认 `AmazonEC2RoleforSSM` 和 `AWSOpsWorksCMInstanceProfileRole` 是否在**权限策略**列表中。如果未列出其中一个或两个托管策略，请手动将这些托管策略添加到角色中。

   1. 在**信任关系**选项卡上，验证服务角色是否具有信任 `ec2.amazonaws.com` 服务代表您代入角色的信任策略。有关如何对角色使用信任策略的更多信息，请参阅[修改角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html)或 AWS 安全博客文章《[如何在 IAM 角色中使用信任策略》](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/)。

1. 在亚马逊 EC2 控制台中，确保您与 OpsWorks 适用于 Puppet Enterprise 服务器的区域位于同一区域，然后重启您的服务器正在使用的 EC2 实例。

   1. 选择名为的 EC2 实例`aws-opsworks-cm-instance-`*server-name*。

   1. 在**实例状态**菜单，选择**启动实例**。

   1. 等待最多 15 分钟让您的服务器重新启动并完全联机。

1. 在 f OpsWorks or Puppet Enterprise 控制台的服务器详细信息页面上，验证服务器状态现在是否正**常**。

如果执行上述步骤后服务器状态仍为**连接丢失**，请尝试以下方法之一。
+ 通过[创建新服务器](gettingstarted-opspup-create.md)并[删除原始服务器](opspup-delete-server.md)来替换服务器。如果当前服务器上的数据对您很重要，请[从最近的备份中恢复服务器](opspup-restore.md)，并验证数据是否为最新，[然后再删除未响应的原始服务器](opspup-delete-server.md)。
+ [请联系 AWS 支持](#tshooterrors-puppet-support)。

### 服务器创建失败，并返回“requested configuration is currently not supported”消息
<a name="w2ab1b7c45c11b6"></a>

**问题：**您尝试创建一台 Puppet Enterprise 服务器，但服务器创建失败，并返回与“The requested configuration is currently not supported。Please check the documentation for supported configurations.”类似的错误消息。

**原因：**可能为 Puppet Master 指定了不支持的实例类型。如果您选择在具有非默认租赁的 VPC 中创建 Puppet 服务器，例如适用于[专用实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)的 VPC，则指定 VPC 内的所有实例也必须为专用或主机租赁。由于某些实例类型 (如 t2) 只适用于默认租赁，指定 VPC 可能不支持 Puppet Master 实例类型，因此服务器创建失败。

**解决方案：**如果您选择具有非默认租赁的 VPC，请使用 m4 实例类型，此类型可以支持专用租赁。

### 无法创建服务器的 Amazon EC2 实例
<a name="w2ab1b7c45c11b8"></a>

**问题：**服务器创建失败，并显示类似于以下内容的错误消息：“创建以下资源失败：[EC2实例]。Failed to receive 1 resource signal(s) within the specified duration.”

**原因：**这很可能是因为 EC2实例没有网络访问权限。

**解决方案：**确保实例具有出站 Internet 访问权限，并且 AWS 服务代理能够发出命令。请确保您的 VPC (具有单一公有子网的 VPC) 已启用 **DNS resolution**，并且您的子网已启用 **Auto-assign Public IP** 设置。

### 服务角色错误阻止服务器创建
<a name="w2ab1b7c45c11c10"></a>

**问题：**服务器创建失败，并显示一条错误消息，上面写着 “未授权执行 sts:” AssumeRole。

**原因：**当您使用的服务角色缺少足够的权限创建新服务器时，可能会出现此问题。

**解决方案：**打开 Puppet Enterprise 控制台；使用控制台生成新的服务角色和实例配置文件角色。 OpsWorks 如果您希望使用自己的服务角色，请将 **AWSOpsWorks Rol CMService** e 策略附加到该角色。验证 **opsworks-cm.amazonaws.com** 在角色的 **Trust Relationships** 中随服务一起列出。验证与 Puppet 主服务器关联的服务角色是否已附加**AWSOps工作CMService角色**托管策略。

### 超出弹性 IP 地址限制
<a name="w2ab1b7c45c11c12"></a>

**问题：**服务器创建失败，并显示一条错误消息，指出 “以下资源创建失败：[EIP， EC2实例]。Resource creation cancelled, the maximum number of addresses has been reached.”

**原因：**当您的账户已使用最大数量的弹性 IP (EIP) 地址时，将会出现此问题。默认的 EIP 地址数量限制为 5。

**解决方案：**您可以释放现有 EIP 地址或删除您的账户未使用的 EIP 地址，也可以联系 Cust AWS omer Support 以增加与您的账户关联的 EIP 地址的限制。

### 无人参与节点关联失败
<a name="w2ab1b7c45c11c14"></a>

**问题：**新的 Amazon EC2 节点的无人值守或自动关联失败。Puppet Enterprise 控制面板中未显示应已添加到 Puppet Master 的节点。

**原因：**如果您没有将 IAM 角色设置为允许 `opsworks-cm` API 调用与新实例通信的实例配置文件，则可能会发生这种 EC2 情况。

**解决方案：**在您的 EC2 实例配置文件中附加允许`AssociateNode`和 `DescribeNodeAssociationStatus` API 调用的策略 EC2，如中所述[OpsWorks 为 Puppet Enterprise 自动添加节点](opspup-unattend-assoc.md)。

### 系统维护失败
<a name="tshooterrors-puppet-maintenance-fails"></a>

AWS OpsWorks CM 每周执行系统维护，以确保 AWS经过测试的最新版本的 Puppet Server（包括安全更新）始终在 Puppet Enterpr OpsWorks ise 服务器上运行。如果由于任何原因导致系统维护失败，则 AWS OpsWorks CM 会通知您该故障。有关系统维护的更多信息，请参阅 [Puppet Enterp OpsWorks rise 系统维护中](opspup-maintenance.md)。

本节介绍可能的失败原因并提出解决方案。

**Topics**
+ [服务角色或实例配置文件错误会阻止系统维护](#w2ab1b7c45c11c16b8)

#### 服务角色或实例配置文件错误会阻止系统维护
<a name="w2ab1b7c45c11c16b8"></a>

**问题：**系统维护失败，并显示一条错误消息，上面写着 “未授权执行 sts:AssumeRole” 或类似的权限错误消息。

**原因：**当您使用的服务角色或实例配置文件缺少在服务器上执行系统维护的足够权限时，可能会发生这种情况。

**解决方案：**确保您的服务角色和实例配置文件具有所有必需的权限。

1. 请确保您的服务角色具有所有必需的权限。

   1. 在服务器的**设置**页面上，在**网络和安全**中，选择服务器正在使用的服务角色的链接。这将将服务角色打开以供在 IAM 控制台中查看。

   1. 在**权限**选项卡上，验证 `AWSOpsWorksCMServiceRole` 是否已附加到该服务角色。如果 `AWSOpsWorksCMServiceRole` 未列出，则将此策略添加到角色。

   1. 验证 **opsworks-cm.amazonaws.com** 在角色的 **Trust Relationships** 中随服务一起列出。有关如何对角色使用信任策略的更多信息，请参阅[修改角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html)或 AWS 安全博客文章《[如何在 IAM 角色中使用信任策略》](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/)。

1. 请确保您的实例配置文件具有所有必需的权限。

   1. 在服务器的**设置**页面上，在**网络和安全**中，选择服务器正在使用的实例配置文件的链接。这将打开实例配置文件以在 IAM 控制台中查看。

   1. 在**权限**选项卡上，确认 `AmazonEC2RoleforSSM` 和 `AWSOpsWorksCMInstanceProfileRole` 是否在**权限策略**列表中。如果未列出其中一个或两个托管策略，请手动将这些托管策略添加到角色中。

   1. 在**信任关系**选项卡上，验证服务角色是否具有信任 `ec2.amazonaws.com` 服务代表您代入角色的信任策略。有关如何对角色使用信任策略的更多信息，请参阅[修改角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html)或 AWS 安全博客文章《[如何在 IAM 角色中使用信任策略》](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/)。

## 其他帮助和支持
<a name="tshooterrors-puppet-support"></a>

如果本主题没有描述您的特定问题，或者您已尝试本主题中的建议，但问题仍然存在，请访问 [OpsWorks 论坛](https://forums.aws.amazon.com/forum.jspa?forumID=153&start=0)。

您也可访问 [AWS Support Center ](https://console.aws.amazon.com/support/home#/)。 AWS 支持中心是创建和管理 AWS 支持案例的中心。S AWS upport Center 还包括指向其他有用资源的链接，例如论坛 FAQs、技术、服务运行状况和 AWS Trusted Advisor。