1

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

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

pxe::install --> pxe::config --> pxe::config2 --> pxe::service

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"),
  }

}

当我运行代理时,我收到以下错误:

错误:/File[/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?

谢谢,

4

1 回答 1

1

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

于 2012-06-10T14:59:17.507 回答