Vagrant 傀儡文件资源需要存档资源

Vagrant 傀儡文件资源需要存档资源,vagrant,puppet,Vagrant,Puppet,我用木偶做我的流浪供应。我使用位于的存档模块下载并提取glassfish,如下所示: archive { '/tmp/glassfish-4.1.1.zip': ensure => present, extract => true, extract_path => '/opt/', source => 'http://download.java.net/glassfish/4.1.1/release/glassfi

我用木偶做我的流浪供应。我使用位于的存档模块下载并提取glassfish,如下所示:

archive { '/tmp/glassfish-4.1.1.zip':
  ensure        => present,
  extract       => true,
  extract_path  => '/opt/',
  source        => 'http://download.java.net/glassfish/4.1.1/release/glassfish-4.1.1.zip',
  cleanup       => true,
  creates       => '/opt/glassfish4',
}
应用该资源后,我想将一个文件移动到新创建的glassfish目录中,如下所示

file { 'domain.xml':
  ensure  => file,
  path    => '/opt/glassfish4/glassfish/domains/domain1/config/domain.xml',
  source  => 'puppet:///modules/glassfish/domain.xml',
}
我想在文件移动资源中要求提取已经完成,因为提取不是创建文件,而是创建目录。差不多

require => FILE['..']
  file { 'domain.xml':
    ensure  => file,
    path    => '/opt/glassfish4/glassfish/domains/domain1/config/domain.xml',
    source  => 'puppet:///modules/glassfish/domain.xml',
    require => Archive['/tmp/glassfish-4.1.1.zip'],
  }

不工作。

您应该在存档任务上添加一个
require
,这样您的文件任务将类似于

require => FILE['..']
  file { 'domain.xml':
    ensure  => file,
    path    => '/opt/glassfish4/glassfish/domains/domain1/config/domain.xml',
    source  => 'puppet:///modules/glassfish/domain.xml',
    require => Archive['/tmp/glassfish-4.1.1.zip'],
  }

因此,domain.xml文件的副本将在存档任务之后完成。

如果可以使用
文件
资源执行此操作,语法将为
require=>file['/full/path/to/managed/file']
。请注意大小写,并且您必须按资源的名称或标题引用资源。此外,这只适用于实际处于傀儡管理下的资源。实际上,这里可能是这样,但由于很难确定,正如弗里德里克·亨利所建议的那样,与
存档
资源建立关系是一种更好的方法。