一、puppet 目录结构详解
[root@puppetserver puppet]# tree
.
├── auth.conf #实现了puppet的ACL功能
├── autosign.conf #实现了客户端自动认证的配置文件
├── environments
│ └── example_env
│ ├── manifests
│ ├── modules
│ └── README.environment
├── fileserver.conf #文件系统配置文件
├── manifests
│ └── site.pp #节点(既agent)的清单,puppet的主入口文件
├── modules
│ ├── redis
│ │ ├── files
│ │ ├── manifests
│ │ │ └── init.pp ## init.app 是模块的主入口文件,用来定义类资源清单
│ │ └── templates
│ └── test
│ ├── files
│ ├── manifests
│ │ └── init.pp
│ └── templates
├── puppet.conf # 主配置文件
└── rack
├── config.ru
└── public
puppet.conf
Puppet安装完后,配置文件就产生了,名称为puppet.conf,一般在/etc/puppet路径下。
master也可以通过命令:puppet master --genconfig > puppet.conf产生。
agent可以通过命令:puppet agent --genconfig > puppet.conf产生。
puppet配置文件一般包括main、master、agent这几个小节。
一般只需要修改server即可,server一般是master的hostname,同时也要在agent的/etc/hosts中配置。通常在C/S结构下,puppet客户段只执行client,puppet 服务器只运行puppet master,这种模式下可以使用puppet.conf 的默认配置无需修改。
autosign.conf
该配置文件需要手工创建,用于自动签名证书功能。通过master上的autosign.conf配置文件。可以实现对某一来源或所有来源的agent做自动授权证书签名。
cat /etc/puppet/autosign.conf
#*代表允许所有,也可以指定IP段等。
auth.conf
Puppet master 默认使用规则权限配置文件,即使文件不存在该文件下配置的默认规则仍然会生效.
Master/server 会根据auth.conf配置文件来限制agent的来源。为了网络安全访问,agent访问Server过程中使用的是HTTPS协议进行通信交互。
auth.conf配置文件格式包含7个参数,分别是path、environment、method、auth、allow、allow_ip和deny,每个参数都有自己独立的值,通过这7个参数的自由组合,就形成了agent访问master目录权限控制的ACL。
path:指定ACL的路径。Path后接系统路径、正则表达式、路径前缀和资源等信息。
environment : 它可以包含一个环境或多个环境列表,如果不设置则默认为所有环境。
method : 包含find、search、save和destroy(销毁),多参数用逗号隔开
auth:包含yes或no,any和no或off。默认是yes或on,
- auth设置成yes或on均表示:匹配那些已经通过认证的agent请求。
- auth设置成any表示:只匹配认证进行中和没有被认证的请求。
- Auth设置no或off,均表示匹配未认证过的agent请求。认证过的请求会跳过此ACL。
allow : 值可以是hostname或certname. 2.7.1以后的版本还支持正则表达式。
allow_ip:接一个IP或者IP网段,表示允许那些IP范围通过
deny:接一个IP或者多个IP,网段或域名等,表示禁止这些范围访问master的目录权限
fileserver.conf
Puppet文件服务器的配置文件,用path配置文件路径,allow/deny配置访问权限。它是master/server目录的挂载配置文件,包含了挂载目录的位置和挂载目录的授权信息,只有agent服务器从server获取文件时才会用到它,文件同步不要大于1MB的数据文件,puppet虽然有实现同步静态文件的功能,但其并未使用专业的文件同步数据协议,如果多个agent同时同步比较大的数据,就会引起master超时,最终导致同步失败。