创建测试站点

mkdir -p /etc/puppet/modules/test/{manifests,templates,files}

Puppet 实验四 文件测试_第1张图片

定义一个类,然后在tmp目录中创建主机名。txt的文件,然后内容hello world

puppet的资源=ansible角色,puppet的类=ansible模块,这样可能会更加容易理解一点,共同点都是2者都是类似于powershell 的DSC强制一致性配置。

vi /etc/puppet/modules/test/manifests/init.pp

class test {

file { “/usr/tmp/$hostname.txt": content => "Hello world, Hello Pcdog"; }

}


模块文件定义了$hostname,需要传参数给ERB 模块文件,主机变量名通过facter命令获取,传给puppetagent.pp的资源配置文件

vi /etc/puppet/modules/test/templates/test.erb

hostname <%= fqdn %>


类应用到哪一个服务器/节点

mkdir /etc/puppet/manifests/nodes

vi /etc/puppet/manifests/nodes/puppetagent.pp

node 'puppetagent' {

include test

}


测试节点加入puppet,修改site.pp

vi /etc/puppet/manifests/site.pp

import "nodes/puppetagent.pp"

如果有多个pp文件可以写

import "nodes/*.pp"


检查配置,服务器端

puppet parser validate /etc/puppet/modules/test/manifests/init.pp

puppet agent --test --server puppetmaster --noop

Puppet 实验四 文件测试_第2张图片

客户端测试

puppet agent --test --server puppetmaster --noop

543f5d16e5d84ffdbecbbc65e57a4702

去掉noop直接执行

puppet agent --test --server puppetmaster

675aab6340894cb6a0d66e9f960a704b

目录下文件和内容已经有了

915c81f263674e12af77d3c2db8dcab4


多对多的关系如下,由此可以推算,节点可以应用多个类和模块,从而获得多个服务器角色


全局配置

模块

节点

site.pp

module

file.pp

class.erb

node

hostname.pp