微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的正确目录语法.

原文地址:https://www.jb51.cc/windows/366200.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐