Puppet:将单个模板放在递归静态目录中

时间:2012-05-18 14:17:15

标签: puppet

我正在尝试配置Puppet模块来安装和配置tftp。

这是我模块中的依赖关系链(右边的项目需要左边的项目)。

pxe :: install - > pxe :: config - > pxe :: config2 - > PXE ::服务

pxe :: config仅复制静态文件和目录。特别是,

class pxe::config {
  File {
    owner => root,
    group => root,
    require => Class["pxe::install"],
  }

  file { "/var/lib/tftpboot":
    ensure => directory,
    recurse => true,
    purge => false,
    mode => 0755,
    source => "puppet:///modules/pxe/tftpboot",
  }

成功复制。

问题是我想在此目录中放置一个模板。这就是pxe :: config2的用武之地。(我认为将它放在config2中会允许我需要pxe :: config,并且目录/var/lib/tftpboot/pxelinux.cfg/已经存在。)

class pxe::config2 {
  File {
    ensure => present,
    owner => root,
    group => root,
    mode => 0644,
    require => [ Class["pxe::install"], Class["pxe::config"] ],
  }

  file { "/var/lib/tftp/pxelinux.cfg/default":
    content => template("pxe/default.erb"),
  }

}

当我运行代理时,出现以下错误:

  

错误:/文件[/var/lib/tftp/pxelinux.cfg/default]/ensure:从更改   缺席呈现失败:无法设置'目前确保:没有这样的   文件或目录 - /var/lib/tftp/pxelinux.cfg/default.puppettmp_5977   在/etc/puppet/modules/pxe/manifests/config2.pp:14

该错误表示模板的父目录不存在。但是,我在代理程序运行后检查了,并且/var/lib/tftp/pxelinux.cfg/确实存在但是为空。

有谁知道如何递归复制静态目录/ var / lib / tftp和模板/var/lib/tftp/pxelinux.cfg/default?

谢谢,

1 个答案:

答案 0 :(得分:1)

看起来它可能只是一个带有目录名称的拼写错误 - 该文件位于/ var / lib / tftp目录下,而不是/ var / lib / tftpboot。