《Puppet实战手册》——1.5 创建去中心化Puppet架构

    xiaoxiao2024-08-22  112

    本节书摘来自异步社区《Puppet实战手册》一书中的第1章,第1.5节,作者:【英】John Arundel著,更多章节内容可以访问云栖社区“异步社区”公众号查看

    1.5 创建去中心化Puppet架构

    有些系统分散管理时会工作得更好。

    使用Puppet最常见的方法就是运行一台Puppet Master服务器,Puppet客户端连接到Puppet Master并接收各自的配置清单。然而,Puppet Master并不是必需的,可以直接在配置清单文件上运行puppet apply命令来应用变更。

    ubuntu@cookbook:~/puppet$ puppet apply manifests/site.pp Notice: Finished catalog run in 0.08 seconds

    换句话说,如果能安排适当的清单文件分发至客户端上,就可以使用Puppet直接执行而不需要通过Puppet Master来控制。这将消除由于仅有一台主服务器导致的性能瓶颈,也消除了单点故障。同时,这也避免了添加新的客户端时颁发SSL签名证书的问题。

    有很多方法可以将清单文件分发至客户端,但是Git(或其他版本控制系统)为此做了大量工作。用户可以在本地副本中编辑清单,然后提交至Git,并推送至中心仓库。在那里,它们会自动分发至客户端。

    准备工作如果Puppet配置清单没有存放在Git中,参考上面步骤将清单加入Git中管理。

    此时,需要第二台机器来检出Puppet仓库的副本。如果使用EC2实例,则创建另一个实例,并给它取个主机名,如cookbook2。

    操作步骤具体步骤如下。

    1. 在新机器上检出GitHub仓库。

    ubuntu@cookbook2:~$ git clone   git@github.com:bitfield/cookbook.git puppet Cloning into 'puppet'... remote: Counting objects: 8, done. remote: Compressing objects: 100% (5/5), done. remote: Total 8 (delta 0), reused 5 (delta 0) Receiving objects: 100% (8/8), done.

    2. 参照下面的内容,修改manifests/nodes.pp文件:

    node 'cookbook', 'cookbook2' {  file { '/tmp/hello':   content => "Hello, world\n",  } }

    3. 运行以下命令:

    ubuntu@cookbook2:~/puppet$ sudo puppet apply manifests/site.pp Notice: /Stage[main]//Node[cookbook2]/File[/tmp/hello]/ensure: defined content as '{md5}a7966bf58e23583c9a5a4059383ff850' Notice: Finished catalog run in 0.05 seconds

    工作原理新机器上已经创建了一个Puppet仓库的副本。

    ubuntu@cookbook2:~$ git clone git@github.com:bitfield/cookbook.git puppet

    在运行Puppet前,必须首先在配置清单中针对cookboo2创建节点声明。

    node 'cookbook', 'cookbook2' {  ... }

    现在应用这些配置清单,让它们生效。

    ubuntu@cookbook2:~/puppet$ sudo puppet apply manifests/site.ppPuppet找到cookbook2的节点声明,并应用与之前用于cookbook相同的配置清单:

    Notice: /Stage[main]//Node[cookbook2]/File[/tmp/hello]/ensure:  defined content as '{md5}a7966bf58e23583c9a5a4059383ff850'

    更多参考此处已经将Puppet基础设施从一台机器扩展到了另外一台,现在可以将其扩展到任意多台。只需要检出Git仓库,并执行puppet apply命令。

    这是一个非常好的方法,不需要复杂的配置,也不用多余的机器作为Puppet Master,就可以将现在的机器交由Puppet管理。笔者的很多客户都已经使用了这种基于Git的基础设施,它简单、易于扩展和维护。

    需要考虑的一个改进就是要让每台机器自动从GitHub拉取修改并使用Puppet应用这些修改。然后要做的就只是推送变更至GitHub,变更的内容就会在某一个时间部署至所有Puppet管理的机器。接下来,读者将在下一节看到如何做到这一点。

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)