如果我使用不可变的服务器/容器,是否需要诸如Chef,Puppet,Ansible或Salt之类的工具?这些配置管理工具旨在建立配置然后进行维护。

如果要部署不可变服务器,是否应该仅将配置管理工具用于初始配置?

#1 楼

对此有一些答案:


需要构建那些不变的图像。当从已知的起始状态开始时,使用老式的过程脚本来构建某些东西当然会更容易,但是随着时间的流逝它仍然变得非常笨拙(例如Dockerfiles),尤其是当您最终想要一大堆不同的图像用于Packer和其他映像构建工具可以与Chef,Ansible,Puppet,Salt等完美集成。
不可变性是一个频谱,而不是二进制。即使在“非常不变”的部署中,具有一些需要运行时管理的配置文件也很常见。这也是可以使用CAPS工具的地方,尽管轻量级的选项(如Consul Templates或etcd)可能更有意义,具体取决于整体下文。如果您使用的是不可变的应用程序服务器,但传统上是使用Chef来管理数据库服务器,那么即使在不可变的方面也可以使用Chef来执行较小的管理任务。
零日管理。不变性很好,但是当下一个OpenSSL 0day掉落时,您将怎么办?如果您的构建管道可以创建立即的修补程序映像并进行部署,那就太好了。但是许多人可能不会具备这种快速转向能力。
不可能一成不变的事情。无法回答,但整个基础很少100%不变。诸如数据库服务器和开发人员工作站之类的东西(是的,它们是您的基础设施的一部分)在使不可变变得困难与不可能之间。


评论


您对“许多人”做出了很多假设。那些无法为其不可变基础架构生成图像的人,很可能一开始就没有不可变基础架构。

– Evgeny Zislis
17 Mar 2 '17 at 21:06

“可以使用不可变容器进行部署”与“即使正在进行其他部署也可以在6小时内重建和重新部署每个容器”之间存在很大的差距。

–coderanger
17 Mar 2 '17 at 21:43

以我的经验,当您有6小时的空白时,您将无法拥有不变的基础架构。具有不可变的服务器和快速构建不可变的服务器不是相同的功能,但是它们紧密相关。

– Evgeny Zislis
17 Mar 2 '17 at 21:45

许多说“我们运行不可变容器”的人不在这一类别中。因此,指出这是一个要解决的问题,这是问题的全部重点。

–coderanger
17 Mar 2 '17 at 21:53

您可以将“ immutable”定义为“没有一个SSH并进行手动更改”,因为它并不意味着完全不变,因为它们在正常操作期间会自行更改。甚至编写一个pidfile都是一种突变。

– Gaius
17年8月24日在9:18

#2 楼

我认为绝对不变的环境是个坏主意。

诸如Ansible,Chef,Puppet之类的CM工具在包括您在内的许多情况下都非常有用。

我在使用ansible在GCP中对VM实例进行初始配置。