Joo*_*ost 9 configuration-management ansible
我们已经设置了一个服务器来运行一个小型协会的基础设施。到目前为止,我们已经尝试使用 Ansible 管理配置,但这并没有取得很大的成功。也许我们做错了。
原则上,我们的想法是这个服务器在大部分时间都将保持独立,人们会在蓝色月亮中添加或更改一次内容。这使得在服务器上配置和运行的任何内容都有详细记录和清晰的记录至关重要,因为不经常管理系统的人必然会失去概览(更不用说记住细节了)。此外,随着时间的推移,将管理此服务器的一组人员的组成将发生变化(随着人们离开并加入“委员会”)。
我们从一个干净的安装开始,每当我们想要设置一些东西(nginx、phpfpm、postfix、防火墙、sftp、munin 等)时,都会在 ansible 中添加角色。也许由于我们的经验不足,我们当然永远无法按照我们需要的方式一次性输入一组 ansible 任务,也因为配置有点反复试验的过程。这意味着在实践中,我们通常会首先配置我们想要在服务器上运行的任何服务,然后转换为 ansible 任务。你可以看到这是怎么回事。人们忘记然后测试任务,或者害怕这样做有破坏事物的风险,或者更糟的是:我们忘记或忽略向 ansible 添加东西。
今天,我们对 ansible 配置实际上反映了服务器上的配置几乎没有信心。
目前我看到三个主要问题:
这里的一个重要考虑因素是,无论我们最终做什么,新手都应该很容易掌握诀窍而无需大量练习。
是否有可行的替代方案仍然提供一些保证和检查(类似于将 Ansible 文件合并到 some master
)“配置事物并写下您所做的事情”未能提供?
编辑:我们已经考虑过/etc
使用 git。有没有一种合理的方法来保护机密(私钥等),但仍然可以以某种方式在服务器外部使用配置存储库?
EEA*_*EAA 10
只需启动一个可用于验证更改的测试/暂存 VM。您当前首先手动执行更改的方法已无可救药地被破坏并注定要失败。您和您的团队需要致力于正确使用 CM,其中一部分是拥有可用的测试系统。即使只是一个本地 vagrant VM 就足够了。
这不仅有助于测试新的更改,而且还可以作为新员工(或有一段时间没有使用该系统的老员工)熟悉您的 ansible 设置的测试平台。
关于在 git 中保留 /etc/ :不,不要这样做。该目录只是 ansible 正在改变的一小部分,在那里安装 git 只会鼓励人们进行本地更改。
将你的 ansible playbook 保存在 git 中。考虑限制权限,以便只有您可以将 ansible 更改应用于实时服务器。其他人可以提交带有更改的拉取请求,您可以在适当的情况下查看并合并到 master 中。
也许由于我们的经验不足,我们当然永远无法按照我们需要的方式一次性输入一组 ansible 任务,也因为配置有点反复试验的过程。这意味着在实践中,我们通常会首先配置我们想要在服务器上运行的任何服务,然后转换为 ansible 任务。
虽然有其他问题(如没有一个测试环境),你可以不这样做一个大的改善这个。
一个Ansible的核心设计目标是要幂等,这意味着运行你的剧本多次不应该改变什么(除非你已经改变了戏剧)。因此,当我配置一个新软件时,我的步骤是:
如果您认为第一次在 Ansible 中不会写出正确的东西,那么无论如何都要编写它并迭代它,直到它正确为止,就像任何其他代码一样。这大大减少了忘记对您所做的某些更改进行 Ansiblize 的机会,因为您所做的每个更改在开发过程中的某个时刻都已经在 Ansible 中。
归档时间: |
|
查看次数: |
504 次 |
最近记录: |