

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

# 已注册实例的生命周期
<a name="registered-instances-lifecycle"></a>

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

**注意**  
仅 Linux 堆栈支持此功能。

已注册实例的生命周期从代理安装并开始运行之后开始。此时，它会指示 OpsWorks Stacks 向堆栈注册实例。以下状态示意图概述了密钥生命周期元素。

![\[State diagram showing lifecycle of registered instances with various states and transitions.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/on-prem-state.png)


每个状态对应于一个实例状态。边缘代表以下 OpsWorks Stacks 命令之一。以下各节讨论了相关详细信息。
+ **设置**：此命令对应于设置[生命周期事件](workingcookbook-events.md)并运行实例的配置配方。
+ **配置**：此命令对应于配置生命周期事件。

  OpsWorks 当实例进入或离开在线状态时，堆栈会在堆栈中的每个实例上触发此事件。这些实例运行其 Configure 配方，这会进行任何所需的更改以适应新实例。
+ **关机**：此命令对应于关机生命周期事件，可运行该实例的关机配方。

  这些配方执行某些任务 (如关闭服务)，但不会停止该实例。
+ **取消注册**：此命令会取消注册实例，且不对应于生命周期事件。

**注意**  
为简便起见，该示意图不显示 Deregistering 和 Deleted 状态。您可以从示意图中的任何状态取消注册某实例，这会向该实例发送 Deregister 命令并将其移至 Deregistering 状态。  
如果您注销在线实例， OpsWorks Stacks 会向堆栈中的其余实例发送 Configure 命令，通知它们该实例即将离线。
确认 Deregister 命令后，该实例仍在运行，但它处于 Deleted 状态且不再是该堆栈的一部分。如果您想再次将该实例合并到堆栈中，则必须重新注册。

**Topics**
+ [注册](#registered-instances-lifecycle-registering)
+ [Running Setup](#registered-instances-lifecycle-running-setup)
+ [已注册](#registered-instances-lifecycle-registered)
+ [分配](#registered-instances-lifecycle-assigning)
+ [在线](#registered-instances-lifecycle-online)
+ [设置失败](#registered-instances-lifecycle-setup-failed)
+ [取消分配](#registered-instances-lifecycle-unassigning)
+ [初始设置配置更改](#registered-instances-lifecycle-setup-config)

## 注册
<a name="registered-instances-lifecycle-registering"></a>

代理发送注册请求后， OpsWorks Stacks 会向实例发送安装命令，使其处于 Registing 状态，从而启动实例生命周期。在实例确认 Setup 命令后，它将移至 [Running Setup](#registered-instances-lifecycle-running-setup) 状态。

## Running Setup
<a name="registered-instances-lifecycle-running-setup"></a>

Running Setup 状态运行该实例的 Setup 配方。Setup 的工作原理取决于前面的状态。

**注意**  
如果您在实例处于 “运行设置” 状态时取消其分配， OpsWorks Stacks 会发送关机命令，该命令会运行实例的关闭配方，但不会停止实例。该实例移至 [取消分配](#registered-instances-lifecycle-unassigning) 状态。

**Topics**
+ [注册](#registered-instances-lifecycle-running-setup-registering)
+ [分配](#registered-instances-lifecycle-running-setup-assigning)
+ [设置失败](#registered-instances-lifecycle-running-setup-failed)

### 注册
<a name="registered-instances-lifecycle-running-setup-registering"></a>

在注册过程中，安装程序会创建一个 OpsWorks Stacks 实例来表示堆栈中的注册实例，并在该实例上运行一组核心安装配方。

初始设置执行的一个关键更改是覆盖该实例的主机文件。通过注册实例，您将用户管理移交给 OpsWorks Stacks，后者必须拥有自己的主机文件以控制 SSH 登录权限。初始设置还会创建或修改多个文件，并且在 Ubuntu 系统中修改包源并安装一组软件包。有关更多信息，请参阅 [初始设置配置更改](#registered-instances-lifecycle-setup-config)。

在注册期间，该进程将调用 IAM `AttachUserPolicy`，它是作为先决条件创建的附加到 IAM 用户的权限的一部分。如果 `AttachUserPolicy` 不存在（很可能是因为您运行的是旧版本的 AWS CLI），则该过程将回退到调用 `PutUserPolicy`。

**注意**  
为了保持一致性， OpsWorks Stacks 会运行所有核心安装配方。然而，某些配方仅在实例已分配给至少一个层后才执行部分或全部任务，因此，它们不一定会影响初始设置。
+ 如果设置成功，该实例将移至 [已注册](#registered-instances-lifecycle-registered) 状态。
+ 如果设置失败，该实例将移至 [设置失败](#registered-instances-lifecycle-setup-failed) 状态。

### 分配
<a name="registered-instances-lifecycle-running-setup-assigning"></a>

该实例至少有一个已分配的层。 OpsWorks Stacks 运行每个图层的设置配方，包括您[分配给图层设置](workingcookbook-executing.md)事件的任何自定义配方。
+ 如果设置成功，该实例将移至 Online 状态，并且 OpsWorks Stacks 将在堆栈中的每个实例上触发 Configure 生命周期事件以向它们通知新实例。
+ 如果设置失败，该实例将移至 Setup Failed 状态。

**注意**  
此设置过程将再次运行核心配方。但是，Chef 配方是幂等的，因此它们不会重复已执行的任何任务。

### 设置失败
<a name="registered-instances-lifecycle-running-setup-failed"></a>

如果处于 [分配](#registered-instances-lifecycle-assigning) 状态的实例的设置过程失败，您可以通过使用 [Setup 堆栈命令](workingstacks-commands.md)重试，手动重新运行该实例的 Setup 配方。
+ 如果设置成功，分配的实例将移至 [在线](#registered-instances-lifecycle-online) 状态，并且 OpsWorks Stacks 将在堆栈中的每个实例上触发 Configure 生命周期事件以向它们通知新实例。
+ 如果设置尝试失败，该实例将返回到 Setup Failed 状态。

## 已注册
<a name="registered-instances-lifecycle-registered"></a>

处于 “已注册” 状态的实例是堆栈的一部分，由 OpsWorks 堆栈管理，但未分配给层。它们可以无限期地保持该状态。

如果您将实例分配给一个或多个图层， OpsWorks Stacks 会向该实例发送安装命令，然后该实例将进入[分配](#registered-instances-lifecycle-assigning)状态。

## 分配
<a name="registered-instances-lifecycle-assigning"></a>

在实例确认 Setup 命令后，它将移至 [Running Setup](#registered-instances-lifecycle-running-setup) 状态。

如果您在实例处于 “分配” 状态时取消分配该实例， OpsWorks Stacks 会终止安装过程并发送 Shutdown 命令。该实例移至 [取消分配](#registered-instances-lifecycle-unassigning) 状态。

## 在线
<a name="registered-instances-lifecycle-online"></a>

该实例现在是至少一个层的成员，并且被视为常规 OpsWorks Stacks 实例。它可以无限期地保持该状态。

如果您在实例处于联机状态时取消分配该实例， OpsWorks Stacks 会向该实例发送关机命令，并向堆栈的其余实例发送配置命令。该实例移至 [取消分配](#registered-instances-lifecycle-unassigning) 状态。

## 设置失败
<a name="registered-instances-lifecycle-setup-failed"></a>

Setup 命令失败。
+ 您可以通过运行 [Setup 堆栈命令](workingstacks-commands.md)进行重试。

  该实例恢复为 [Running Setup](#registered-instances-lifecycle-running-setup) 状态。
+ 如果您取消分配实例， OpsWorks Stacks 会向该实例发送关闭命令。

  该实例移至 [取消分配](#registered-instances-lifecycle-unassigning) 状态。

## 取消分配
<a name="registered-instances-lifecycle-unassigning"></a>

完成 Shutdown 命令后，该实例不再分配给任何层，并恢复为 [已注册](#registered-instances-lifecycle-registered) 状态。

**注意**  
如果某实例被分配给多个层，则取消分配将适用于每个层；您无法取消分配已分配层的子集。如果您想要一组不同的已分配层，则取消分配该实例，然后重新分配所需层。

## 初始设置配置更改
<a name="registered-instances-lifecycle-setup-config"></a>

初始设置会在所有已注册实例上创建或修改以下文件和目录。

**创建的文件**  

```
/etc/apt/apt.conf.d/99-no-pipelining
/etc/aws/
/etc/init.d/opsworks-agent
/etc/motd
/etc/motd.opsworks-static
/etc/sudoers.d/opsworks
/etc/sudoers.d/opsworks-agent
/etc/sysctl.d/70-opsworks-defaults.conf
/opt/aws/opsworks/
/usr/sbin/opsworks-agent-cli
/var/lib/aws/
/var/log/aws/
/vol/
```

**修改的文件**  

```
/etc/apt/apt.conf.d/99-no-pipelining
/etc/crontab
/etc/default/monit
/etc/group
/etc/gshadow
/etc/monit/monitrc
/etc/passwd
/etc/security/limits.conf (removing limits only for EC2 micro instances)
/etc/shadow
/etc/sudoers
```

初始设置还会在 Amazon EC2 微型实例上创建交换文件。

初始设置对 Ubuntu 系统进行以下更改。

软件包源  
初始设置将对软件包源进行如下更改。  
+ `deb http://archive.ubuntu.com/ubuntu/ ${code_name} main universe`

  收件人：`deb-src http://archive.ubuntu.com/ubuntu/ ${code_name} main universe`
+ `deb http://archive.ubuntu.com/ubuntu/ ${code_name}-updates main universe`

  收件人：`deb-src http://archive.ubuntu.com/ubuntu/ ${code_name}-updates main universe`
+ `deb http://archive.ubuntu.com/ubuntu ${code_name}-security main universe`

  收件人：`deb-src http://archive.ubuntu.com/ubuntu ${code_name}-security main universe`
+ `deb http://archive.ubuntu.com/ubuntu/ ${code_name}-updates multiverse`

  收件人：`deb-src http://archive.ubuntu.com/ubuntu/ ${code_name}-updates multiverse`
+ `deb http://archive.ubuntu.com/ubuntu ${code_name}-security multiverse`

  收件人：`deb-src http://archive.ubuntu.com/ubuntu ${code_name}-security multiverse`
+ `deb http://archive.ubuntu.com/ubuntu/ ${code_name} multiverse`

  收件人：`deb-src http://archive.ubuntu.com/ubuntu/ ${code_name} multiverse`
+ `deb http://security.ubuntu.com/ubuntu ${code_name}-security multiverse`

  收件人：`deb-src http://security.ubuntu.com/ubuntu ${code_name}-security multiverse`

软件包  
初始设置卸载 `landscape` 并安装以下软件包。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/registered-instances-lifecycle.html)