现在我们介绍一下配置管理的基本概念。
假设你必须在数百个计算机上部署软件。该软件可以是操作系统或软件,也可以是现有软件的更新。你可以手动完成这个任务,但是如果你必须在一夜之间完成这个任务,因为明天公司可能会有一个十亿美元的大单。
即使你可以手动操作,但也不能确保软件部署不会出意外,例如部署的新软件有重大bug,需要恢复到以前稳定的旧版本。显然手动完成这项工作是非常低效的。
为了解决这个问题,引入了配置管理。通过使用配置管理工具(如Chef、Puppet等),你可以把该项任务自动化。所要做的就是在一个集中的服务器中指定配置,然后所有节点可以根据服务器上的配置更新自己。
并且,这些配置的历史记录都是可跟踪的,可以方便地回滚到以前版本。
因此,基本上,我们需要在中央服务器上指定配置一次,然后在数千个节点上复制配置。配置管理有助于以一种非常结构化和简单的方式执行以下任务:
- 当需求发生变化时,确定需要更改哪些组件。
- 重新部署,因为自上次部署以来需求已经发生了变化。
- 如果新部署的模块有bug,回滚到旧版。
- 替换错误的组件。
一般有两种方式来管理配置,即推配置和拉配置。
-
拉配置: 在这种类型的配置管理中,节点定期轮询中央服务器以获取更新。这些节点是动态配置的,因此它们基本上是从中央服务器获取配置。chef, puppet使用拉配置。
-
推配置: 在这种类型的配置管理中,中央服务器将配置推送到节点。与拉配置不同,为了配置节点,必须在集中式服务器中执行某些命令。使用推配置模式的工具有Ansible等。