手动配置意味着团队中的某个人跟踪少量服务器,当需要更改时,在每台服务器上单独记录并进行所需的更改。
这种操作方式是工作密集型的,并且在多台服务器上容易出错,因为它们很容易出现分歧。
所以,一段时间后,可以通过一些脚本使用 Fabric (http://www .fabfile.org/) 或 Capistrano (https://capistranorb.com/
)<跨度>。基本模型是将配置和新代码推送到服务器并执行一些自动化任务,最后重新启动服务。通常,这是直接通过团队的计算机手动完成的。
代码和配置通常存在于 Git 上,但手动过程可以更改它,因为它是分离的。如果您以这种方式工作,请确保仅部署存储在源代码管理下的文件。
服务器维护的某些元素,如操作系统升级或更新库,可能仍需要手动完成。
下图显示了如何从进行配置更改的团队成员的计算机推送代码:
在这个阶段,可以手动添加新的基础设施或r 使用诸如Terraform (https://www.terraform.io/) 与云服务交互。
更复杂的替代方法是使用 Puppet (https://puppet.com/) 或 Chef (https://www.chef.io/)。它们使用客户端-服务器架构。它们允许我们使用自己的声明性语言来描述服务器的状态,当服务器中的状态发生变化时,所有客户端都将更新以遵循定义。服务器将报告任何问题或偏差,并将集中配置定义。
下图总结了这个过程:
在某些情况下,这些工具可能能够在云服务中分配资源;例如,在 AWS 中添加一个新的 EC2 实例。
A configuration management tool also helps in monitoring and performs a number of remediation tasks. For example, it can restart services that should be running, or retry if there has been a problem changing the configuration.
It also scales better for a higher number of servers.
所有这些策略都需要专门的工具,并且通常由特定的运营团队处理。这使得需要在他们之间进行协调以进行配置更新的开发人员无法获得配置。
这种工作分工产生了一些摩擦,随着时间的推移,DevOps 运动提出了其他方式来构建这项工作。