说明书存储库 - AWS OpsWorks

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

说明书存储库

重要

这些区域有: AWS OpsWorks Stacks 该服务已于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请联系 AWS Support 团队开启 AWS re: post 或通过 AWS 高级支持

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

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

源代码控制管理器

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

  • Linux 堆栈:Git 和 Subversion

  • Windows 堆栈:Git

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

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

档案

AWS OpsWorks Stacks 支持以下存档:

  • Linux 堆栈 — 存储在亚马逊 S3 或网站(存档)上的 zip、gzip、bzip2 或 tarball 文件。HTTP

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

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

下图显示了所需的目录和文件结构,这取决于您是运行 Linux 还是 Windows 堆栈。食谱结构与SCM存储库的结构相同,因此用省略号 (...) 表示。

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

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

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

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

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

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

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

  • other — 包含其他文件类型(例如定义或规范)的可选用户定义目录。

  • 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 堆栈将你的食谱存储库安装在堆栈的实例上。

重要

更新存储库中的现有食谱后,必须运行 update_cookbooks stack 命令进行定向 AWS OpsWorks 用于更新每个在线实例的本地缓存的堆栈。有关更多信息,请参阅 运行堆栈命令