puppet之master/agent模型详解

简介:

puppet的master-agent模型原理

wKioL1P-gpCDizL0AAGj4SOxPK8830.jpg 

agent需要发送node name 以及各facts 到master端,所以需要占据不小的带宽

master端在收到agent请求后首先判断是哪个节点,判断完成之后去找匹配当前node的定义,找到后对比客户端发送的时候生成的catalog,然后将catalog发送给agent

 

master一定要去判定获取应该执行哪些内容,假如从site.pp中获取include定义大概需要三个类的话,因此master必须到它的对应的模块中,(只要类是存在的),master一定会获取这些类并将它们整合在一起进行编译成catalog,而后将编译的结果(catalog)发送至agent端

 

agent拿到catalog之后,就可以在本地运行

但是master端发送过来的时候,内容可能已应用过了;或者是已经发来了三个类,这些类中除了一个类,其他类全都应用过了,因此将其再次应用即可

 

因此在应用的时候,要先查询当前节点所关联的每一个资源的状态信息,而后强制那些没有跟对应的资源定义不一样的内容强制改变为在资源中所定义的状态并应用

 

应用完后则报告至master端

 

最终则实现我们所定义的目标状态

 

证书的签发

签证的时候如果存在agent向master进行申请,而master却不在线,那么则无法签署了,因此我们可以让其实现自动签署,那么自动签署则会很不安全,一般情况下,自动签署是不应该使用的,不能自动签署那就意味着我们需要现场签署,偶尔我们可能迟到签署的,但是比自动签署要安全很多

 

如果要想实现自动签的话

可以设置master自动签发所有的证书,我们只需要在/etc/puppet 目录下创建 autosign.conf 文件。(不需要修改 /etc/puppet/puppet.conf文件,因为我默认的autosign.conf文件的位置没有修改)

cat > /etc/puppet/autosign.conf<<EOF               

*.test.com
EOF

这样就会对所有来自 test.com 的机器的请求,都自动签名。

 

还可以使用预签证书

在服务器端为每一个客户端生成秘钥并签署证书,然后让agent自己去复制证书

 

因此最好还是使用第一种方法

一般我们做一个证书的时候对方有一个主机名,因为在网络内地址会随时发生改变的,但主机名一般是固定的,这样一来带来一个问题,既然每个节点都是靠FQDN来定义,于是意味着在当前网络内每个被管理的节点都必须有FQDN 而且必须通过网络内DNS服务器解析通过才可以

 

大规模的网络环境中DNS服务器必不可少

 

agent端在master验证了来源之后,接下来一定知道agent的定义,每个agent的需求各不相同的

因此agent只会读取site.pp文件,那么我们要分门别类的去做,可以实现为每一类服务器定义一个pp文件,而后在site.pp里执行impor 即可

 

比如在site.pp里定义包含web.pp proxy.pp等 

 

只要包含进来的都会被读取,而这每个文件里面的都应该是节点的定义,每个节点中无非就要声明执行哪一类的,从而master端根据客户端的请求者的名称得到认证之后,将FQDN去对比puppet的manifests下的site.pp中的node定义,当匹配了之后则将node pp中的内容进行获取

 

节点也可以继承,我们可以定义基本配置,让特殊节点各自在额外添加对类的支持即可

因此site.pp中可以定义一个基本类,而后在其他pp文件里去继承基本类,并且在site.pp中奖其他pp文件import即可,或者自己定义一个基本node 

 

接下来就可以获取到各class文件了,class可能在不同的路径或者依赖不同的file文件或模板文件;那么我们如何获取这些文件:class默认都在各个模块目录中,不管当前节点有多少个模块master一定会根据需要将模块定义的各个类自动装载的,所以我们声明一个类就需要在自动装载器所装载的类中进行加载,如果某一node包含了事先并不存在的类,那么则无法执行

 

实现多节点管理

规划如下:

服务器角色

服务器IP

Master : node3.test.com

10.12.33.57

Agent  :  node1.test.com

10.12.33.58

测试hostname无误

[root@node3 manifests]# ping node1.test.com

PING node2.test.com (10.12.33.59) 56(84) bytes of data.

64 bytes from node2.test.com (10.12.33.59): icmp_seq=1ttl=64 time=1.60 ms

将站点清单移动至其他目录

[root@node3 manifests]# pwd

/etc/puppet/manifests

[root@node3 manifests]# mv site.pp /tmp/

 

启动为master/agent模式

在master/agent的模式下,我们必须将其服务启动起来,安装上服务后才可以后续操作

[root@node3 manifests]# ls /etc/init.d/puppet*

/etc/init.d/puppet /etc/init.d/puppetmaster  /etc/init.d/puppetqueue

我们所用到的无非就是标红的字体的脚本了

 

启动master

/etc/puppet/puppet.conf 默认只适用agent端,需要将其覆盖掉,因此我们需自己生成配置文件

[root@node3 puppet]# pwd

/etc/puppet

[root@node3 puppet]# puppet master --genconfig >puppet.conf

 

覆盖完成之后,某些内容需要更改不然无法正常工作

 

更改pid,一般pid都放在/var/run 目录下,因此更改参数如下 

[root@node3 puppet]# vim puppet.conf

 rundir = /var/run/puppet 

 pidfile = $rundir/master.pid

 

启动服务

第一次启动的时候不建议使用service启动,首先要使用手动启动并观察其是否会报出error信息

[root@node3 puppet]# puppet master --no-daemonize--verbose --debug

过程中,我们可以看到以下信息

Info:Creating a new SSL key for ca                    #为CA创建key
Info: Creating a new SSL certificate request for ca             #为CA创建字签
Info: Certificate Request fingerprint (SHA256): 1A:55:58:42:32:C6:6:98:AF:02
Notice: Signed certificate request for ca
Debug: Using cached certificate for ca
Info: Creating a new certificate revocation list         #为当前节点创建证书颁发申请
Info: Creating a new SSL key for node3
Debug: Using cached certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.y
Info: Creating a new SSL certificate request for node3
Info: Certificate Request fingerprint (SHA256): F5:2B:6C:86:29:81:7:DD:B9:B1    #为当前节点创建证书
Notice: node3 has a waiting certificate request
Debug: Using cached certificate for ca
Debug: Using cached certificate_request for node3
Notice: Signed certificate request for node3
Notice: Removing file Puppet::SSL::CertificateRequest node3 at'/etc/puppet/ssl/ca/requests/node3.pem'          #当前节点为CA服务器而后为每个agent颁发证书
Notice: Removing file Puppet::SSL::CertificateRequest node3 at'/etc/puppet/ssl/certificate_requests/node3.pem'

Debug: Using settings: adding file resource 'config':'File[/etc/pu:loglevel=>:debug,:path=>"/etc/puppet/puppet.conf"}'
Debug: Finishing transaction 69861255471540

如果确保没有问题,我们取消进程而后使用service启动服务

[root@node3 puppet]# /etc/init.d/puppetmaster start

查看服务是否被监听

[root@node3 puppet]# ss -tanlp | grep 8140

LISTEN     0      5                         *:8140                     *:*      users:(("puppet",8233,5))

 

配置agent端

安装puppet

[root@node1~]# rpm -ql puppet

[root@node1 ~]#wgethttp://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm

[root@node1 ~]# rpm -ivhpuppetlabs-release-el-6.noarch.rpm 

[root@node1 ~]# yum install puppet

 

[root@node1 ~]# cd /etc/puppet/

编辑配置文件在[main]加入参数

[main]

    server =node3.test.com

保存退出 并手动启动agent,查看是否存在error信息

puppet agent --server=node3 --no-daemonize --verbose--debug

如果出现以下信息

Debug: /File[/var/lib/puppet/ssl/private_keys/node1.localhost.pem]:Autorequiring File[/var/lib/puppet/ssl/private_keys]

则需要将本地puppet生成的key删除

[root@node1 puppet]# cd /var/lib/puppet/ssl

[root@node1 ssl]# ll

total 24

drwxr-xr-x 2 puppet puppet 4096 Aug 21 14:42certificate_requests

drwxr-xr-x 2 puppet puppet 4096 Aug 21 14:44 certs

-rw-r--r-- 1 puppet puppet 1141 Aug 21 14:44 crl.pem

drwxr-x--- 2 puppet puppet 4096 Aug 21 14:41 private

drwxr-x--- 2 puppet puppet 4096 Aug 21 14:42 private_keys

drwxr-xr-x 2 puppet puppet 4096 Aug 21 14:42 public_keys

[root@node1 ssl]# rm -fr *

 

再次运行,如果显示以下信息则为正确

Info: Creating a new SSL key for node1.test.com

Info: Caching certificate for ca

 

返回master端

查看列表,说明node2等待签名

 [root@node3~]#  puppet cert list

  "node1"(SHA256) A6:22:67:2B:6E:A6:8B:DD:BD:26:DC:0B:0A:3C:42:07:8F:66:65:3A:43:79:02:89:EE:92:AD:7A:1C:99:B0:3F

鉴定证书

[root@node3 ~]# puppet cert sign node1

Notice: Signed certificate request for node1

Notice: Removing file Puppet::SSL::CertificateRequestnode1 at '/etc/puppet/ssl/ca/requests/node1.pem'

如果有很多主机都需要进行签名可以使用--all参数进行签名

稍等片刻,在执行过程中我们可以在agent信息中提示以下信息:

Info: Creating a new SSL key for node1.test.com

Info: Caching certificate for ca

Info: csr_attributes file loading from/etc/puppet/csr_attributes.yaml

Info: Creating a new SSL certificate request fornode1.test.com

Info: Certificate Request fingerprint (SHA256):C9:85:85:85:52:1D:13:88:46:E9:F7:DE:29:77:42:A8:6A:21:4D:67:89:6A:25:3C:B7:A2:09:59:07:9C:DF:50

 

没有问题则可以启动服务了

[root@node1puppet]# /etc/init.d/puppet start

 

使agent自动安装服务

[root@node3 puppet]# cd /etc/puppet/manifests

[root@node3 manifests]# ls

[root@node3 manifests]# vim site.pp

写入以下信息

node 'node1.test.com' {

    includenginx::nginx_web

}

 

node 'node2.test.com' {

    includenginx::nginx_proxy

}

这样 我们使node1使用nginx_web的模块 使其只提供web服务,而node2使用nginx_proxy模块,使其只提供proxy的服务

 

修改完成后需要重新加载配置文件

[root@node3 manifests]# /etc/init.d/puppetmaster reload
Stoppingpuppetmaster:                                    [  OK  ]
Startingpuppetmaster:                                    [  OK  ]

 

首先查看是否安装nginx

[root@node2 puppet]# rpm -q nginx

package nginx is not installed

稍等片刻在agent上观察

[root@node2 puppet]# rpm -q nginx
nginx-1.6.1-1.el6.ngx.x86_64

 

以上,为master/agent的使用,感谢各位



本文转自zuzhou 51CTO博客,原文链接:http://blog.51cto.com/yijiu/1545972

相关文章
|
2月前
|
人工智能 API 决策智能
Modelscope结合α-UMi:基于Modelscope的多模型协作Agent
基于单个开源小模型的工具调用Agent,由于模型容量和预训练能力获取的限制,无法在推理和规划、工具调用、回复生成等任务上同时获得比肩大模型等性能。
|
4月前
|
机器学习/深度学习 存储 人工智能
TableAgent数据分析智能体——数据分析师的大模型
TableAgent数据分析智能体——数据分析师的大模型
|
4月前
|
人工智能 数据安全/隐私保护
AI Agent是大模型落地业务场景的主流形式
【1月更文挑战第5天】AI Agent是大模型落地业务场景的主流形式
213 2
AI Agent是大模型落地业务场景的主流形式
|
5月前
|
人工智能 自然语言处理 搜索推荐
大模型应用产品「归一妙计」亮相,AI Agent落地广告投放场景
在通用L0级语言模型基础之上,结合领域知识训练出适配各应用场景的专属模型,将成为企业经营的“智慧大脑”。 在广告投放这一企业核心的营销场景中,「营销领域大模型」已成为引领行业变革的关键力量,它将重塑数字营销的内容生产方式、投放工作流、消费模式等等,进一步推动营销生态的发展和进化,让广告主的营销内容更丰富、投放更高效、转化更直观。 近期,归一智能正式发布了AI Agent应用产品「归一妙计」,这是一款基于「利欧归一」营销领域大模型,训练出的适配各媒体平台投放工作流的SEMGPT专属模型,能够为企业提供更加智能、精准和高效的AI广告投手服务。
266 0
大模型应用产品「归一妙计」亮相,AI Agent落地广告投放场景
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
多模态大一统、AI智能体将如何引领未来?阿里妈妈与人大高瓴学者探讨大模型趋势
多模态大一统、AI智能体将如何引领未来?阿里妈妈与人大高瓴学者探讨大模型趋势
206 0
|
4月前
|
开发框架 数据可视化 Windows
如何提升大模型Agent的能力 ——LLM Agent框架 Modelscope-Agent 实战
本文介绍Agent到底是什么 ,如何进行优化,以及如何使用Agen框架。
|
14天前
|
自然语言处理 前端开发 Swift
Llama3 中文通用Agent微调模型来啦!(附手把手微调实战教程)
Llama3模型在4月18日公布后,国内开发者对Llama3模型进行了很多训练和适配,除了中文纯文本模型外,多模态版本也陆续在发布中。
|
16天前
|
人工智能 搜索推荐 决策智能
【AI Agent系列】【阿里AgentScope框架】1. 深入源码:详细解读AgentScope中的智能体定义以及模型配置的流程
【AI Agent系列】【阿里AgentScope框架】1. 深入源码:详细解读AgentScope中的智能体定义以及模型配置的流程
85 0
|
16天前
|
XML 人工智能 JSON
【AI大模型应用开发】【LangChain系列】5. 实战LangChain的智能体Agents模块
【AI大模型应用开发】【LangChain系列】5. 实战LangChain的智能体Agents模块
48 0
|
2月前
|
人工智能 JSON 运维
AI大模型运维开发探索第三篇:深入浅出运维智能体
大模型出现伊始,我们就在SREWorks开源社区征集相关的实验案例。玦离同学提供了面向大数据HDFS集群的智能体案例,非常好地完成了运维诊断的目标。于是基于这一系列的实验和探索。本文详细介绍智能体在运维诊断中的应用探索。

热门文章

最新文章