Puppet:模块中的多个清单

时间:2014-07-16 01:17:22

标签: puppet

我正在尝试创建Puppet模块来设置我的网络服务器。

我想要的是将配置拆分为逻辑模块(按服务显示:webserverdatabaseftp等。)但我无法弄清楚如何使用其他清单在init.pp

我将仅使用puppet apply而非服务器客户端配置。

我的文本模块清单(kp / manifests / init.pp):

class kp {
    include kp::testfile
}

include kp

另外的清单(kp / manifests / testfile.pp)

define kp::testfile {

    $value = template("kp/some.erb")

    file { 'testfile':
        path    => '/tmp/my.txt',
        ensure  => file,
        content => $value
    }
}

文档说:

If a class is defined in a module, you can declare that class by name in any manifest. Puppet will automatically find and load the manifest that contains the class definition.

但是当我运行puppet apply init.pp时,我收到错误消息

Could not find class kp::testfile for myhost.com at /myDir/puppetModules/kp/manifests/init.pp:2 on node vagrant.example.com

事实

  • /myDir/puppetModules/位于modulepath,所以此处没有问题
  • Puppet version v2.7.11
  • Ubuntu 12.04 LTS

我做错了什么? 提前谢谢!

1 个答案:

答案 0 :(得分:3)

您的kp :: testfile是已定义的类型,而不是类。要使用已定义的类型,您需要声明它:

kp::testfile { 'name': }

尝试重新定义kp :: testfile,如

class kp::testfile {

    $value = template("kp/some.erb")

    file { 'testfile':
        path    => '/tmp/my.txt',
        ensure  => file,
        content => $value
    }
}

你可能会有更好的运气。