Puppet 模块
puppet 模块基础
puppet模块可以导入,复用都很方便,在这里先回答下之前的两个问题:
- 查看puppet 模块路径,可以使用如下命令:
1 | /etc/uppet/modules:/usr/share/puppet/modules #可以看到这两个目录是puppet 模块默认所在的目录。 |
- 要引用 puppet模块,如果模块所在上面的两个默认的路径可以使用:
import “模块名”
如果提示模块不存在,比如我在 /data/modules,那么有两种解决方法: - 是修改puppet.conf文件,添加目录到modulepath.举例 :
modulepath = /data/modules:/etlc/puppet/modules
2. 是在引用的是时候用绝对路径。
import “/data/modules/模块名”
了解完puppet 模块基础后,接下来就为大家写个简单模块示例:
puppet 模块实例
1 | root@s1:/etc/puppet/modules# cd /etc/puppet/modules |
这三个目录说明:files目录是用来存放同步远程客户端的文件或者文件夹,manifests目录下放.pp文件,且必须要有init.pp,templates是存放的puppet 模板文件,是以.erb结尾的。
建立init.pp文件
1 | # /etc/puppet/modules/test/manifests/init.pp |
在/etc/puppet/manifests/site.pp里添加:
1 | node "default" { |
注:不建议这样操作,实际生产中,我会在site.pp里添加 import “nodes.pp”,然后在nodes.pp里添加上面的内容。
这样我们就建立了我们第一个puppet 模块,在到客户端 c2.inanu.net 上运行puppet查看结果:
1 | congpeijun@s2:/tmp$ puppet agent --server s1.ubuntu.local --test |
再次验证,可以看到已经成功运行,已经达到预期的效果。在/tmp/目录下生成了nanu这个文件,有个问题,不知道大家注意到没有,这里并没有import “test”模块,而直接使用了include test::test类。有兴趣的同学可以试试,再看下效果。