使用 Puppet 管理 AWS 中的应用程序配置

使用 Puppet 管理 AWS 中的应用程序配置

我有一个带有 .net 后端(RESTful 服务)和 angular js 前端的 Web 应用程序。该应用程序托管在 IIS Web 服务器上。我将在 AWS 上部署该应用程序,以便

  • 我将拥有一个包含 Windows 基础映像的自动缩放组
  • 我需要创建/更新应用程序使用的配置文件。例如,对于后端,我有一个需要访问 RDS 实例的 Web.Config 文件(IP、用户名和密码等)
  • 我将拥有各种环境(为简单起见,我们假设 QA、Staging 和 Production 都有自己的 RDS 实例)

如何使用 puppet (主/从)管理多个环境和节点的应用程序配置,以便它在自动缩放组中创建新实例时工作?

答案1

我使用 Chef 做了类似的过程。下面是我完成这个过程的方式(我将使用 Chef 进行描述,但使用 Puppet 应该非常相似):

假设每个环境都有一个自动缩放组。一个好方法是通过以下方式使用 powershell 脚本:用户数据在我的自动缩放组的启动配置中,引导任何生成的实例。这样,任何生成的实例都会自动将自己注册到我的 Chef 服务器。

Chef 负责安装和配置整个堆栈(apache、mysql 等等)。

我为每个环境使用一个启动配置(不要只使用一个,因为如果不修改 prod,您将无法修改 qa/staging 环境)。在每个启动配置的用户数据中,您可以在将节点引导到 Chef 时设置适合环境的变量,或者为节点分配 Chef 角色,其中包含此环境所需的所有变量(例如,chef 角色将是“QA”、“staging”、“prod”……)。然后,实例将运行 Chef 配方并使用正确的变量进行配置

额外细节:

  • 在 Chef 中,我们需要一个验证器 pem 密钥来签署从实例到 Chef 服务器的第一次调用。我将此密钥存储在 S3 中,生成的实例会下载它以在我的 Chef 服务器上注册(如果您需要,我可以详细说明如何安全地访问它)。

希望这可以帮助

相关内容