本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用环境变量
重要
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre
注意
本主题中的建议适用于 Chef 11.10 和早期版本的 Chef。要获取 Chef 12 和更新版本中的环境变量,您必须使用应用程序数据包。有关更多信息,请参阅 AWS OpsWorks 数据包参考和应用程序数据包 (aws_opsworks_ app)。
当您为应用程序指定环境变量时, AWS OpsWorks Stacks 会将变量定义添加到应用程序的deploy属性中。
自定义层可以使用配方来检索变量的值 (通过使用标准节点语句),并以该层的应用程序可以访问的格式存储该值。
您必须实现一个自定义配方,从实例的 deploy
属性获取环境变量值。然后,该配方可以将数据以应用程序可以访问的格式 (例如 YAML 文件格式) 存储在实例上。一个应用程序的环境变量定义存储在该应用程序的 deploy
中的 environment_variables
属性中。以下示例显示了名为 simplephpapp
的应用程序的这些属性的位置 (使用 JSON 代表属性结构)。
{ ... "ssh_users": { }, "deploy": { "simplephpapp": { "application": "simplephpapp", "application_type": "php", "environment_variables": { "USER_ID": "168424", "USER_KEY": "somepassword" }, ... } }
通过使用标准节点语法,配方可以获取变量值。以下示例显示了如何从上述 JSON 中获取 USER_ID
值并将其放在 Chef 日志中。
Chef::Log.info("USER_ID: #{node[:deploy]['simplephpapp'][:environment_variables][:USER_ID]}")
有关如何从堆栈配置和部署 JSON 中检索信息并将其存储在实例上的更多详细说明,请参阅传递数据到应用程序。