0

我正在使用 Spinnaker 将 3 层系统部署到 QA,然后再部署到生产。这些系统中的每一个系统中的配置文件都指向其他系统。如果我在 AMI 中烘焙 QA 配置,那么在升级到 Prod 时如何更改它?是 1) 拥有两组不同的 AMI - 一组用于 QA,一组用于 Prod,或者,2) 让 AMI 没有配置,然后在部署后(以某种方式)配置它以更改配置文件?推荐什么?

4

2 回答 2

0

在我们公司,我自己也在努力解决类似的问题。我的解决方案是使用 Packer 脚本为特定目的创建 AMI。这使我能够 - 1. 尽可能多地配置服务器,然后将这些配置存储在 AMI 中。2. 如果需要,可以轻松更改这些配置。

然后,使用 Ansible 脚本启动 AMI,并在特定实例上进行所有其余配置。

就我而言,我选择为舞台和制作创建不同的图像,但主要是因为它们差异很大。如果它们更相似,我可能会选择为两者使用单个 AMI。

Ansible 在这里为您提供的优势是考虑您的配置,包括一次写入生产和登台服务器。

于 2016-02-14T13:33:18.340 回答
0

您可以在部署时为集群定义自定义AWS 用户数据(在集群配置的高级设置下)。然后,您可以在应用程序中检索此用户数据。这将允许您更改这些类型的配置。

在 Netflix,我们有一系列 init 脚本,它们被烘焙到基础镜像中,并提供了一种通过 nebula / gradle 扩展自定义启动 (init.d) 脚本的机制。这通常会设置诸如 NETFLIX_ENVIRONMENT 之类的值,这些值是众所周知的并针对其进行编程的。

我们还通过https://github.com/Netflix/archaius使用了特征翻转机制。这允许我们添加集群外部但可以针对它们的属性。

当涉及到安全凭证时,本演示文稿中概述了该方法,但本质上,图像会到达发布此类凭证的外部服务。https://speakerdeck.com/bdpayne/key-management-in-aws-how-netflix-secures-sensitive-data-without-its-own-data-center

于 2016-02-16T20:42:01.990 回答