示例 1:安装软件包 - AWS OpsWorks

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

示例 1:安装软件包

重要

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

软件包安装是配方的较常见用法之一,可能非常简单,具体取决于软件包。例如,以下配方会在 Linux 系统上安装 Git。

package 'git' do action :install end

package 资源会处理软件包安装。对于本示例,您不需要指定任何属性。资源名称为 package_name 属性的默认值,可标识软件包。install 操作会指导提供程序安装软件包。您可以通过跳过 install 来简化代码;它是 package 资源的默认操作。当您运行配方时,Chef 会利用相应的提供程序来安装软件包。在将用于示例的 Ubuntu 系统上,提供程序会通过调用 apt-get 来安装 Git。

注意

在 Windows 系统上安装软件的过程稍有不同。有关更多信息,请参阅 安装 Windows 软件

要使用 Test Kitchen 在 Vagrant 中运行此配方,首先需要设置说明书,并初始化和配置 Test Kitchen。以下内容针对的是 Linux 系统,但 Windows 和 Macintosh 系统的过程与此过程基本类似。首先打开终端窗口;本章中的所有示例均使用命令行工具。

准备说明书
  1. 在您的主目录中,创建一个名为 opsworks_cookbooks 的子目录,其中将包含本章的所有说明书。然后,为该说明书创建一个名为 installpkg 的子目录,并导航到该子目录。

  2. installpkg 中,创建一个名为 metadata.rb 的文件,其中包含以下代码。

    name "installpkg" version "0.1.0"

    为简单起见,本章中的示例仅指定说明书名称和版本,但是 metadata.rb 可以包含各种说明书元数据。有关更多信息,请参阅关于说明书元数据

    注意

    确保在初始化 Test Kitchen 之前创建 metadata.rb;它会使用相应数据创建默认配置文件。

  3. installpkg 中,运行 kitchen init,它会初始化 Test Kitchen 并安装默认的 Vagrant 驱动程序。

  4. kitchen init 命令在 installpkg 中创建名为 .kitchen.yml 的 YAML 配置文件。在您常用的文本编辑器中打开 文件。.kitchen.yml 文件中包含 platforms 部分,该部分指定在哪些系统上运行配方。Test Kitchen 创建一个实例,并在每个平台上运行指定的配方。

    注意

    默认情况下,Test Kitchen 每次在一个平台上运行配方。如果您将 -p 参数添加到创建实例的任何命令中,则 Test Kitchen 将在每个平台上并行运行配方。

    对于此示例,一个平台已足够,因此请编辑 .kitchen.yml 以删除 centos-6.4 平台。您的 .kitchen.yml 文件现在应如下所示:

    --- driver: name: vagrant provisioner: name: chef_solo platforms: - name: ubuntu-12.04 suites: - name: default run_list: - recipe[installpkg::default] attributes:

    Test Kitchen 仅运行处于 .kitchen.yml 运行列表中的那些配方。您使用 [cookbook_name::recipe_name] 格式标识配方,其中,recipe_name 省略了 .rb 扩展名。最初,.kitchen.yml 运行列表中包含说明书的默认配方 installpkg::default。那是您要实施的配方,因此您不必修改运行列表。

  5. 创建 installpkg 的子目录,该子目录名为 recipes

    如果说明书中包含配方 (大部分均包含),则这些配方一定位于 recipes 子目录中。

现在,您可以将配方添加到说明书中,并使用 Test Kitchen 在实例上运行它。

运行配方
  1. 创建一个名为 default.rb 的文件 (其中包含本节开头的 Git 安装示例代码),并将该文件保存到 recipes 子目录中。

  2. installpkg 目录中,运行 kitchen converge。该命令会在 Vagrant 中启动一个新的 Ubuntu 实例,将您的说明书复制到实例中,并开始运行 Chef,以执行 .kitchen.yml 运行列表中的配方。

  3. 要验证配方是否已成功,请运行 kitchen login,这样可打开指向实例的 SSH 连接。然后运行 git --version,以验证是否已成功安装 Git。要返回到您的工作站,请运行 exit

  4. 完成后,运行 kitchen destroy 以关闭实例。下一个示例使用不同的说明书。

此示例是一个很好的入门方式,但它特别简单。其他软件包安装起来可能更复杂;您可能需要执行以下任意或所有操作:

  • 创建和配置一个用户。

  • 创建针对数据、日志等的一个或多个目录。

  • 安装一个或多个配置文件。

  • 为不同的操作系统指定不同的软件包名称或属性值。

  • 启动一项服务,然后根据需要重新启动它。

以下示例描述了如何解决这些问题,并介绍了其他一些有用的操作。