步骤 3:设置环境运行脚本 - AWS OpsWorks

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

步骤 3:设置环境运行脚本

使用以下命令设置环境以运行脚本。

pipenv install -r requirements.txt pipenv shell
注意

目前,该脚本只能在 Application Manager 中预配置单层应用程序。例如,如果您为同一堆栈中的两个层运行脚本两次,则脚本将在 Application Manage 中创建两个不同的应用程序。

设置环境后,请查看脚本参数。您可以通过运行 python3 stack_exporter.py --help 命令来查看迁移脚本的可用选项。

参数 描述 必填 类型 默认值
--layer-id 导出此 OpsWorks 图层 ID 的 CloudFormation 模板。 字符串
--region OpsWorks 堆栈的 AWS 区域。如果您的 OpsWorks 堆栈区域和 API 终端节点区域不同,请使用堆栈区域。此区域与 OpsWorks堆栈中的其他资源部分(例如,EC2 实例和子网)属于同一区域。 字符串 us-east-1
--provision-application 默认情况下,该脚本会置备由 CloudFormation 模板导出的应用程序。将此参数传递到脚本中,值为 FALSE 可跳过 CloudFormation模板的配置。 布尔值 TRUE
--launch-template

此参数定义是否使用现有启动模板还是创建新的启动模板。您可以创建使用推荐的实例属性的新启动模板,也可以创建使用与在线实例匹配的实例属性的新启动模板。

有效值包括:

  • RECOMMENDED-使用来自最新 AMI 的实例特征作为 OpsWorks堆栈操作系统和 c5.large 实例大小。

  • MATCH_LAST_INSTANCE-使用最新的可用在线实例特征。

  • LaunchTemplateID/[LaunchTemplateVersion]:选择现有启动模板。(可选)您可以提供模板版本。如果您未提供模板版本,则脚本将使用默认版本。

字符串 RECOMMENDED
--system-updates

定义是否在实例启动时执行内核和软件包更新。

有效值包括:

  • ALL_UPDATES-在实例启动时为内核和软件包执行系统更新。

  • NO_UPDATES-实例启动时不执行系统更新。

  • MATCH_LAYER_SETTINGS-使用 OpsWorks图层或实例的InstallUpdatesOnBoot属性来确定是否安装系统更新。

字符串 ALL_UPDATES
--http-username Systems Manager SecureString 参数的名称,该参数存储用于对包含自定义说明书的 HTTP 存档进行身份验证的用户名。 字符串
--http-password Systems Manager SecureString 参数的名称,该参数存储用于对包含自定义说明书的 HTTP 存档进行身份验证的密码。 字符串
--repo-private-key Systems Manager SecureString 参数的名称,该参数存储用于对包含自定义说明书的存储库进行身份验证的 SSH 密钥。如果存储库已开启 GitHub,则必须生成新的 Ed25519 SSH 密钥。如果不生成新的 Ed25519 SSH 密钥,则与 GitHub 存储库的连接将失败。 字符串
--lb-type

迁移现有负载均衡器时要创建的负载均衡器的类型(如果有)。

有效值包括:

  • ALB (应用程序负载均衡器)

  • Classis (经典负载均衡器)

  • None(如果您不想创建负载均衡器)

字符串 ALB
--lb-access-logs-path 现有 S3 存储桶的路径和存储负载均衡器访问日志的前缀。该 S3 存储桶与负载均衡器必须位于同一区域。如果您未提供值且 --lb-type 参数值设置为 None,则脚本会创建新的 S3 存储桶和前缀。请确保此前缀有适当的存储桶策略。 字符串
--enable-instance-protection 如果设置为 TRUE,则脚本会为您的自动扩缩组创建自定义终止策略(Lambda 函数)。带有 protected_instance 标签的 EC2 实例受到保护,免受横向缩减事件的影响。为每个 EC2 实例添加一个 protected_instance 标签,使其免受横向缩减事件的影响。 布尔值 FALSE
--command-logs-bucket 用于存储 AWS ApplyChefRecipeMountEBSVolumes 日志的现有 S3 存储桶名称。如果您未提供值,脚本将创建一个新的 S3 存储桶。 字符串 aws-opsworks-application-manager-logs-account-id
--custom-json-bucket 用于存储自定义 JSON 的现有 S3 存储桶名称。如果您未提供值,脚本将创建一个新的 S3 存储桶。 字符串 aws-apply-chef-application-manager-transition-data-account-id

备注:

  • 如果您使用私有 GitHub 存储库,则必须为 SSH 创建新的Ed25519主机密钥。这是因为 GitHub 更改了 SSH 中支持的密钥并删除了未加密的 Git 协议。有关Ed25519主机密钥的更多信息,请参阅 GitHub博客文章 “改进 Git 协议安全” GitHub。生成新的 Ed25519 主机密钥后,为 SSH 密钥创建一个 Systems Manager SecureString 参数,并将 SecureString 参数名称用作 --repo-private-key 参数的值。有关如何创建 System SecureString s Manager 参数的更多信息,请参阅《AWS Systems Manager 用户指南》中的创建 SecureString 参数 (AWS CLI) 或创建 Systems Manager 参数(控制台)。

  • --http-username--http-password--repo-private-key 参数指的是 Systems Manager SecureString 参数的名称。当您运行 AWS-ApplyChefRecipes 文档时,迁移脚本会使用这些参数。

  • --http-username 参数要求您还为 --http-password 参数指定一个值。

  • --http-password 参数要求您还为 --http-username 参数指定一个值。

  • 请勿同时为 --http-password--repo-private-key 设置值。提供 SSH 密钥的 Systems Manager SecureString 参数名称 (--repo-private-key),或者存储库用户名 (--http-username) 和密码 (--http-password)。