我正在测试一个类似于以下内容的puppet init.pp文件(在
Windows上):
class myclass { package { 'java': ensure => installed,provider => 'msi',source => 'S:\puppet-repo\jdk1.6.0_31.msi',install_options => { 'INSTALLDIR' => 'C:\tools\java' },} }
然后我的site.pp文件看起来像:
node default { include myclass }
我创建了一个只调用myclass模块的tests / init.pp文件:
class { 'myclass': }
我可以运行tests / init.pp文件,它确实正确安装了java.我想知道是否有办法从命令行运行myclass模块而不创建单独的tests / init.pp文件.或者也许我可以将myclass中的package语句移动到它自己的.pp文件中,并将其包含在init.pp中,然后如果我愿意,我可以运行该单独的.pp文件.有什么更正确的方法呢?
首先,如果您还不知道,则需要验证语法的技巧:
原文链接:https://www.f2er.com/windows/366200.htmlpuppet parser validate my_file.pp
现在,你如何对新类进行现场测试可能会因你的部署而有所不同,但我可以告诉你我是如何做到的,也许它会对你的情况有所帮助.或者也许ServerFault上的每个人都会告诉我我有多错.
在任何给定的环境中,我都有一组使用继承的节点声明:
node base_production_environment { include ssh include ntp include whatever_else } node /prod-app\d+\.mycompany\.com/ inherits base_production_environment { }
现在,当我编写一个新类时,我想在推出它之前先在特定系统上测试它,所以我添加一个更具体的(通过主机名)节点声明,以便它将覆盖不太具体(通过正则表达式)的声明,像这样:
node 'prod-app7.mycompany.com' inherits base_production_environment { include my_new_class }
我对此进行了简化,以突出显示使用特定节点声明进行抽样检查新类.在将它们推广到生产之前,我们还使用environments将更改推广到不太关键的环境.
所以我只是重新阅读你的问题,我想到你可能正在使用推模块目录方法,而不是使用puppetmaster.如果这是真的,您可以包含一个用于测试目的的类,例如:
puppet apply --modulepath=C:\puppet-modules\ -e "include my_class"
不过,我不知道这是否是Windows下puppet的正确目录语法.