我们已经为小型关联设置了运行基础结构的服务器。到目前为止,我们已经尝试使用Ansible管理配置,但这并没有取得很大的成功。也许我们做错了。
原则上,这个想法是大多数时间该服务器将保持不动,人们会在一个蓝色的月亮中添加或更改事物。这使得至关重要的一点是,服务器上进行了任何配置和运行的文件都必须有据可查且清晰明了,因为不经常管理系统的人肯定会丢失概述(更不用说记住细节了)。此外,随着时间的推移,将管理此服务器的人员组的组成发生变化(当人们离开并加入“委员会”时)。
我们从全新安装开始,每当我们想要设置某些内容(nginx,phpfpm,postfix,防火墙,sftp,munin等)时,都会在ansible中添加角色。也许由于我们的经验不足,我们当然永远无法完全按照我们想要的方式来输入一组烦人的任务,这也是因为配置过程是一个反复试验的过程。这意味着实际上,我们通常会先配置要在服务器上运行的任何服务,然后转换为可完成的任务。您可以看到前进的方向。人们忘记了测试然后再测试任务,或者害怕这样做会破坏事物,甚至更糟:我们忘记或忽略将事情添加到ansible中。
如今,我们对Ansible配置实际上反映了服务器上配置的内容几乎没有信心。
目前,我看到三个主要问题:
- 很难(阅读:我们没有很好的方法)测试烦人的任务而又不会冒险破坏事情。
- 它首先要弄清楚所需的配置,然后弄清楚如何将其转换为可完成的任务,因此需要付出额外的工作。
- (理想情况下)我们没有足够频繁地使用它来建立熟悉度和例行程序。
这里一个重要的考虑因素是,无论我们最终要做什么,新手都应该容易地学习绳索而无需大量实践。
是否有可行的替代方案仍然可以提供一些保证和检查(类似于将Ansible文件合并到某些文件master
),而这些保证和检查却无法提供“配置事物并写下您所做的事情”?
编辑:我们已经考虑过提交/etc
到git。有没有一种合理的方式来保护机密(私钥等),但是仍然可以以某种方式在服务器外部使用配置存储库?