std*_*err 10 linux centos puppet cms
注意:有很多理论问题。
最近我正在阅读有关 Puppet(和类似系统)的文章,我相信它可以让我的工作更轻松很多。但我试着——不幸的是不能——去理解我能“傀儡”的东西。我可以想象“云”或 HA 集群,其中更多服务器上的相同配置。但是工作站呢?我有一台电脑(带有 kvm 的 Centos)、一台笔记本电脑(fedora)和个人服务器,它可以(或应该)被人偶化吗?什么是(缺点)优势?或者在我们公司我们有数百台服务器(主要是centos),但每台服务器都有点不同。无法决定在一个地方有很多配置是否更好..(不)优势?我会很高兴您的所有意见或与此主题的链接。
sys*_*138 16
您可以将整个环境人偶化的程度取决于几个变量:
绝对有可能将每个可以被人偶化的 ************ 的东西人偶化,但要到达那里需要正确的文化和每个可以接触可人偶设备的人的支持。某些设备从根本上很难以这种方式管理,例如工作站和 puppet 作为暂存工具比作为配置管理引擎更好。
当您管理一组几乎都在做相同事情的 VM 时,Puppet 非常棒。完全胜利,并没有太多努力就可以到达那里。
另一方面,您拥有我在上一份工作中所拥有的一切,即 200 多台服务器提供 130 项服务,而其中只有一小部分服务器使用不止一台机器。有绝对的公司(和大学)已经puppeted之类的话,但它是一个很大的努力,并采取了很多的买入。它要求您的新机器部署过程的第一步不是“安装操作系统”,而是“创建清单”。
最终,您必须在所有 IT 员工中解决努力与效率的文化问题。
Mic*_*ton 13
任何在所有系统(或它们的一个子集)中相当相似的东西,或者你可以根据你可以摆脱的事实建立模板的东西facter
都是公平的游戏。
真正独特的东西你可能不应该打扰,而应该只是从文件桶中提供配置。
属于任一类别的是我们无法在不密切了解您的环境的情况下做出的决定,因此这由您来弄清楚。
我认为其他人已经涵盖了为什么,所以我会尝试一下如何。我认为通过了解某人可能如何使用 Puppet 来做您想做的事情,它会使决策更加清晰。
先做基础案例
默认情况下,Apache 的 Puppet 模块不应该做太多事情。安装 Apache,将其配置为最低标准,然后启动服务。使这项工作适用于您需要支持的所有发行版。
增加灵活性第二
我们需要添加虚拟主机。您最终会得到一个可以根据需要从一组 conf.d 或 vhosts.d/ 目录中删除文件或删除文件的系统。启用或配置模块也是如此。
使用角色或主机组类将您的构建块联系在一起
我认为使用 Puppet 的最佳方法是确保它是可添加的。使用上面的例子,我们应该有一个模块
我们应该处理角色或主机组类,而不是重载我们的默认 Apache 模块以完全满足特定主机或组的需要。
class role::web_cust1 {
include apache
apache::vhost {'www.domain.com': }
apache::vhost {'www.domain2.com': priority => '99', }
include php
include php-fpm
include mysql
}
Run Code Online (Sandbox Code Playgroud)
再次添加。
将特殊情况放入 Hiera
我非常喜欢让 Puppet 的 Hiera 将其视为 Puppet 的数据库,存储特殊位。如果某个主机或主机组需要特殊设置,首先在模块中放入一个合理的默认值,这样普通用户就不需要知道它。然后为那些特殊主机或主机组插入数据,以便 Hiera 可以使用它,根据需要将其传递给 Puppet。
我的用例是监听端口。一些服务器在它们前面有一个 Varnish 或 haproxy。默认情况下,Puppet 模块让 Apache 使用端口 80,但如果 Hiera 找到数据,它将覆盖该默认值。
我目前正在 Puppetize 相当相似的系统与 Puppetize everything 之间的过渡,我相信从长远来看,Puppetize everything 是更好的方法。
如果您对 Puppet 清单进行版本控制(我们都这样做,对),您将获得基础架构版本控制的所有好处。您的团队将成为运营工程师。这对于特殊的一次性系统与同质养牛场一样重要。您会获得记录谁更改了某些内容、更改时间、确切更改内容以及回滚更改的能力的日志。
就我个人而言,我也发现通过 Puppet 强迫自己做出每一个改变让我更仔细地考虑改变。当我在编写清单时,我会更加关注每一个变化,而不是我通常在命令行上进行黑客攻击。
您的 Puppet 模块也会变得更好。你有多个 Nginx 模块吗?也许这意味着您的 Nginx 模块不是那么好,您需要使其足够灵活以处理您的所有特殊需求。至少将相似之处抽象到您为“自定义”模块扩展的核心 Nginx 模块中。
此外,您是否有信心在灾难发生时将所有特殊需要的服务器恢复到当前状态(关于配置)?如果将工厂 Ubuntu 服务器放入您的内部 wiki 所需的每一个更改都被 Puppetized,您可以轻松地重建 wiki 的当前状态,包括 Bob 昨天对 Tomcat 内存的调整。
最后,这真的很难。如果您不花时间做正确的事情,则管理许多非常不同的服务器可能会导致一些骇人听闻的 Puppet 代码。如果您不使用 Puppet Enterprise,请考虑使用 hiera 和/或 ENC(例如 Foreman)来帮助将您的数据与清单分开。每天人偶化别的东西。当你解释这在 Puppet 中是如何工作的时,让同事开车。每一次改变都会变得更容易。