(1) 代码结构组织

Master上代码的目录结构如下:

|– auth.conf

|– fileserver.conf #puppet文件服务器配置文件

|– manifests #puppet主文件所在目录

| |– modules.pp #puppet各个模块汇总

| |– nodes #各个slave要处理的模块

| | `– execHello.pp #hello模块对应由那些slave处理

| `– site.pp #puppet主文件(入口文件)

|– modules #puppet的各个模块所在文件

| `– hello #hello模块

| |– files #该模块对应的文件资源,可能是要发送给slave的配置文件等

| | `– hello.c

| `– manifests #模块的manifest文件

| `– init.pp #模块入口文件

`– ssl #puppet的证书文件目录

(2) 程序执行流程


代码调用顺序是:

首先,slave向发起master连接请求,进行证书验证;

接着,证书验证通过后,master会直接找到入口文件manifests目录下的site.pp文件,该文件可能包含一些全局变量,参数缺省值(当各个模块没有设置这些参数时,它们的缺省值)以及其它pp文件的调用(在该例子中,会调用modules.pp和nodes下的各个pp文件);

然后,master通过nodes下的各个pp文件定位到该slave要执行的模块(init.pp是各个模块的入口),汇总这些模块代码返回给slave;

最后,slave根据master发过来的manifest,配置信息。

目录结构图:

175918543.jpg