windows – 手动应用puppet类

我正在测试一个类似于以下内容的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文件.有什么更正确的方法呢?

首先,如果您还不知道,则需要验证语法的技巧:
puppet 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的正确目录语法.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...