说明书存储库 - AWS OpsWorks

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

说明书存储库

重要

AWS OpsWorks Stacks 不再接受新客户。在 2024 年 5 月 26 日之前,现有客户将能够正常使用 OpsWorks 控制台、API、CLI 和 CloudFormation 资源,届时它们将停产。为准备此过渡,我们建议您 AWS Systems Manager 尽快将堆栈过渡到。有关更多信息,请参阅 AWS OpsWorks Stacks 生命周期终结常见问题解答将 AWS OpsWorks Stacks 应用程序迁移到 AWS Systems Manager 应用程序管理器

您的自定义说明书必须存储在联机存储库中,它或者是一个存档 (如 .zip 文件),或者是一个源代码控制管理器 (如 Git)。一个堆栈只能有一个自定义说明书存储库,但一个存储库可以包含任意多个说明书。当你安装或更新食谱时, AWS OpsWorks Stacks 会将整个存储库安装到每个堆栈实例的本地缓存中。例如,当实例需要运行一个或多个配方时,它会使用来自该本地缓存的代码。

下面介绍如何构造您的说明书存储库,这取决于类型。图示中的斜体字代表用户定义的目录和文件名,包括存储库或存档名称。

源代码控制管理器

AWS OpsWorks Stacks 支持以下源代码控制管理器:

  • Linux 堆栈:Git 和 Subversion

  • Windows 堆栈:Git

下图显示了所需的目录和文件结构:


                        SCM 说明书存储库的强制结构
  • 说明书目录必须全都在最高一级。

档案

AWS OpsWorks Stacks 支持以下存档:

  • Linux 堆栈:zip、gzip、bzip2 或 tarball 文件,存储在 Amazon S3 或网站(HTTP 存档)上。

    AWS OpsWorks 堆栈不支持未压缩的压缩包。

  • Windows 堆栈:zip 和 tgz(gzip 压缩的 tar)文件,存储在 Amazon S3 上。

下图显示了所需的目录和文件结构,这取决于您是运行 Linux 还是 Windows 堆栈。说明书结构与 SCM 存储库的一样,所以就用省略号 (...) 来表示。


                        强制存档结构
  • Linux 堆栈:说明书目录必须包含在根目录中。

  • Windows 堆栈:说明书必须位于存档的最高一级。

    如果您只有一个说明书,可以选择省略说明书目录而将说明书文件放到最顶层。在那种情况下, AWS OpsWorks Stacks 从 metadata.rb 获取说明书名称。

每个说明书目录都至少拥有下面一个标准目录和文件,但通常拥有所有这些标准目录和文件,这些目录和文件必须使用标准名称:

  • attributes:说明书的属性文件。

  • recipes:说明书的配方文件。

  • templates:说明书的模板文件。

  • 其他:可选的用户定义目录,其中包含其他文件类型,如定义或规范。

  • metadata.rb:说明书的元数据。

    对于 Chef 11.10 及更高版本,如果您的配方依靠其他说明书,则您必须在说明书的 depends 文件中包括相应的 metadata.rb 语句。例如,如果您的说明书包括含有类似于 include_recipe anothercookbook::somerecipe 的语句的配方,则您说明书的 metadata.rb 文件必须包括以下行:depends "anothercookbook"。有关更多信息,请参阅关于说明书元数据

模板必须位于 templates 的子目录下,其中包含至少一个或多个子目录。这些子目录下还可以有子目录。

  • 模板通常具有一个 default 子目录,其中包含 Chef 默认使用的模板文件。

  • other 代表可用于操作系统特定模板的可选子目录。

  • Chef 会基于文件特异性中描述的命名约定自动使用相应子目录中的模板。例如,对于 Linux 和 操作系统,您可以将操作系统特定的模板放在名为 amazonamazon 或 ubuntuubuntu 的子目录中。

具体如何处理自定义说明书取决于您的首选存储库类型。

使用存档
  1. 使用上一节所示的文件夹结构实现您的说明书。

  2. 创建压缩存档文件并将其上传到 Amazon S3 存储桶或网站。

    如果您更新说明书,则必须创建并上传新的存档文件。发送到 Amazon S3 存储桶的内容可能包含客户内容。有关删除敏感数据的更多信息,请参阅如何清空 S3 存储桶?如何删除 S3 存储桶?

使用 SCM
  1. 使用前面所示的结构设置 Git 或 Subversion 存储库。

  2. (可选) 使用存储库的版本控制功能来实施多个分支或版本。

    如果您更新食谱,则可以在新分支中进行更新,然后直接 OpsWorks 使用新版本。您也可以指定特定标记的版本。有关更多信息,请参阅 指定自定义说明书存储库

安装自定义说明书描述了如何让 AWS OpsWorks Stacks 在堆栈的实例上安装你的食谱存储库。

重要

更新存储库中的现有食谱后,必须运行 AWS OpsWorks st update_cookbooks ack 命令指示 Stacks 更新每个在线实例的本地缓存。有关更多信息,请参阅 运行堆栈命令