本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
说明书存储库
重要
这些区域有: AWS OpsWorks Stacks 该服务已于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请联系 AWS Support 团队开启 AWS re: post 或通过
您的自定义说明书必须存储在联机存储库中,它或者是一个存档 (如 .zip 文件),或者是一个源代码控制管理器 (如 Git)。一个堆栈只能有一个自定义说明书存储库,但一个存储库可以包含任意多个说明书。当你安装或更新食谱时, AWS OpsWorks Stacks 将整个存储库安装到每个堆栈实例的本地缓存中。例如,当实例需要运行一个或多个配方时,它会使用来自该本地缓存的代码。
下面介绍如何构造您的说明书存储库,这取决于类型。图示中的斜体字代表用户定义的目录和文件名,包括存储库或存档名称。
- 源代码控制管理器
-
AWS OpsWorks Stacks 支持以下源代码控制管理器:
-
Linux 堆栈:Git 和 Subversion
-
Windows 堆栈:Git
下图显示了所需的目录和文件结构:
-
说明书目录必须全都在最高一级。
-
- 档案
-
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 和 操作系统,您可以将操作系统特定的模板放在名为 amazon
amazon 或ubuntu
ubuntu 的子目录中。
具体如何处理自定义说明书取决于您的首选存储库类型。
使用存档
-
使用上一节所示的文件夹结构实现您的说明书。
-
创建压缩存档文件并将其上传到 Amazon S3 存储桶或网站。
如果您更新说明书,则必须创建并上传新的存档文件。发送到 Amazon S3 存储桶的内容可能包含客户内容。有关删除敏感数据的更多信息,请参阅如何清空 S3 存储桶?或如何删除 S3 存储桶?。
要使用 SCM
-
使用前面所示的结构设置 Git 或 Subversion 存储库。
-
(可选) 使用存储库的版本控制功能来实施多个分支或版本。
如果您更新食谱,则可以在新分支中进行更新,然后直接 OpsWorks 使用新版本。您也可以指定特定标记的版本。有关详细信息,请参阅指定自定义说明书存储库。
安装自定义说明书描述了如何拥有 AWS OpsWorks 堆栈将你的食谱存储库安装在堆栈的实例上。
重要
更新存储库中的现有食谱后,必须运行 update_cookbooks
stack 命令进行定向 AWS OpsWorks 用于更新每个在线实例的本地缓存的堆栈。有关更多信息,请参阅 运行堆栈命令。