本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
重要
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre
如果您已经有一个用于执行所需的自定义任务的脚本,则扩展层的最简单方法通常是实施一个运行该脚本的简单配方。您随后可以将该配方分配到相应的生命周期事件 (通常是设置或部署),或者使用 execute_recipes
堆栈命令手动运行该配方。
以下示例在 Linux 实例上运行 shell 脚本,但您可以对其他类型的脚本(包括 Windows PowerShell 脚本)使用相同的方法。
cookbook_file "/tmp/lib-installer.sh" do
source "lib-installer.sh"
mode 0755
end
execute "install my lib" do
command "sh /tmp/lib-installer.sh"
end
cookbook_file
资源表示一个存储在说明书的 files
目录的子目录中的文件,然后将该文件传输到实例上的指定位置。本示例会将 shell 脚本 lib-installer.sh
传输到实例的 /tmp
目录并将该文件的模式设置为 0755
。有关更多信息,请参阅 cookbook_file
execute
资源表示一个命令,如 shell 命令。此示例运行 lib-installer.sh
。有关更多信息,请参阅 execute
您还可以通过将脚本集成到配方中来运行脚本。以下示例将运行 bash 脚本,但 Chef 还支持 Csh、Perl、Python 和 Ruby。
script "install_something" do
interpreter "bash"
user "root"
cwd "/tmp"
code <<-EOH
#insert bash script
EOH
end
script
资源表示一个脚本。该示例指定了 bash 解释器,将用户设置为 "root"
,并将工作目录设置为 /tmp
。然后,它在 code
块中运行了 bash 脚本,该块可根据需要包含任意数量的行。有关更多信息,请参阅脚本
有关如何使用配方运行脚本的更多信息,请参阅示例 7:运行命令和脚本。有关如何在 Windows 实例上运行 PowerShell 脚本的示例,请参阅运行 Windows PowerShell 脚本。