第 16 步:更新说明书以使用社区说明书 - AWS OpsWorks

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

第 16 步:更新说明书以使用社区说明书

重要

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

最后,更新说明书以使用 Chef 社区提供的外部说明书中的功能。您用于此演练的外部说明书,可以通过 Chef Supermarket (访问外部 Chef 说明书的一个普通地方) 获得。此外部说明书提供自定义资源,利用这个资源,您可以下载和安装应用程序,这类似于您在第 4 步:更新说明书以安装程序包中执行的操作。不过,此资源除了可以安装程序包以外,还可以 Web 应用程序和其他类型的应用程序。

当一个说明书依赖另一个说明书时,您必须指定对另一个说明书的依赖项。要宣布和管理说明书依赖项,我们建议您使用一个名为 Berkshelf 的工具。有关如何在本地工作站上安装 Berkshelf 的更多信息,请参阅 Chef 网站上的关于 Berkshelf

当您安装 Berkshelf 后,按照以下步骤来宣布说明书依赖项,然后创建可在外部说明书中调用资源的配方:

宣布说明书依赖项
  1. 在您的本地工作站上的 opsworks_cookbook_demo 目录中,在 metadata.rb 文件的结尾添加以下行:

    depends "application", "5.0.0"

    这可宣布对一个名为 application 的说明书 (版本 5.0.0.) 的依赖项。

  2. opsworks_cookbook_demo 目录的根目录运行以下命令。命令末尾的句点是有意设计的。

    berks init .

    Berkshelf 创建的许多文件夹和文件都可以用于以后更高级的方案。对于此演练,我们需要的唯一文件是名为 Berksfile 的文件。

  3. 将以下行添加到 Berksfile 文件的末尾处:

    cookbook "application", "5.0.0"

    这将告知 Berkshelf,您要使用 Berkshelf 从 Chef Supermarket 下载的应用程序说明书版本 5.0.0

  4. 在终端处或在命令提示符下,在 opsworks_cookbook_demo 目录的根目录下运行以下命令:

    berks install

    Berkshelf 将创建一份您的说明书以及应用程序说明书的依赖项列表。Berkshelf 在下一个步骤中使用此依赖项列表。

更新实例上的说明书并运行新的配方
  1. recipes 目录的 opsworks_cookbook_demo 子目录中,创建名为 dependencies_demo.rb 的包含以下代码的文件:

    application "Install NetHack" do package "nethack.x86_64" end

    此方法依赖于应用程序食谱中的应用程序资源,以便在实例 NetHack 上安装流行的基于文本的冒险游戏。(当然,您可以替换想要替换的其他任何程序包名称,但前提是实例上程序包管理器要能够随时获得程序包。)

  2. opsworks_cookbook_demo 目录的根目录运行以下命令:

    berks package

    Berkshelf 使用上一个步骤中创建的依赖项列表创建一个名为 cookbooks-timestamp.tar.gz 的文件,该文件包含 opsworks_cookbook_demo 目录和其更新后的内容 (包括说明书所依赖的说明书)。将此文件重命名为 opsworks_cookbook_demo.tar.gz

  3. 将更新后重命名为 opsworks_cookbook_demo.tar.gz 的文件上传到 S3 存储桶。

  4. 按照第 5 步:更新实例上的说明书并运行配方中的步骤,更新实例上的说明书并运行配方。在“运行配方”步骤中,对于 Recipes to execute (要执行的配方),键入 opsworks_cookbook_demo::dependencies_demo

  5. 运行配方后,您应当能够登录实例,然后在命令提示符下键入 nethack 以开始播放。(有关游戏的更多信息,请参阅NetHackNetHack指南。)

下一步中,你可以清理 AWS 您在本演练中使用的资源。下一步是可选的。你可能想继续使用这些 AWS 在您继续了解更多信息时提供的资源 AWS OpsWorks 堆栈。但是,保留这些 AWS 周围的资源可能会导致您持续收取一些费用 AWS account。如果你想保留这些 AWS 资源可供以后使用,你现在已经完成了本演练,你可以直接跳到后续步骤