Puppet文件资源需要存档资源

3

我正在使用 Puppet 进行 Vagrant 配置。我使用了存档模块 (https://forge.puppet.com/puppet/archive/types) 来下载和提取 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['..']

无法正常工作。


如果您可以使用“文件”资源来完成此操作,则语法将为require => File['/full/path/to/managed/file']。请注意大写,还要注意必须按其名称或标题引用资源。此外,这仅适用于实际在Puppet管理下的资源。这可能是这种情况,但由于很难确定,因此像Frédéric Henri建议的那样与“Archive”资源建立关系是更好的方法。 - John Bollinger
1个回答

5

您应该在归档任务中添加一个require,这样您的文件任务将变成:

  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文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接