Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在puppet中仅复制一次文件_Puppet - Fatal编程技术网

在puppet中仅复制一次文件

在puppet中仅复制一次文件,puppet,Puppet,我是puppet的新手,我正在尝试将一个文件复制到远程服务器以安装一个包,该文件将在安装后几分钟被删除。有没有办法只复制一次这个文件。?就像下面的例子 class absent_file { file { '/tmp/hello-file': ensure => 'present', replace => 'no', content => "From Puppet\n", mode => '0644', once

我是puppet的新手,我正在尝试将一个文件复制到远程服务器以安装一个包,该文件将在安装后几分钟被删除。有没有办法只复制一次这个文件。?就像下面的例子

class absent_file {

  file { '/tmp/hello-file':
    ensure  => 'present',
    replace => 'no',
    content => "From Puppet\n",
    mode    => '0644',
    once    => true
  }

} 

所以,我已经想出了怎么做。我没有使用文件模块,而是使用命令并触摸另一个不会随着安装过程被删除的模块。可以删除键,但
somefile.txt
仍将存在,并且进程将变为幂等

exec {'add key':
  command => "echo 'SharedKeyfile' > /key/location && touch /key/location/somefile.txt'",
  onlyif  => "test ! -f /key/location/somefile.txt",    
}

有很多方法可以做到这一点,但首先有一个基本问题:你为什么要这么做?您提到软件包安装,但如果您谈论的是安装tarball,那么如果您使用
软件包
资源来确保安装了所需的软件包,那么您在各个方面都会受益匪浅。我已经使用了软件包资源。我正在尝试复制一个文件,一旦代理服务器身份验证完成,该文件将被删除。此步骤将在安装后完成(15到20分钟后)。我有一个清单,它将文件复制到远程服务器,但由于该文件在代理服务器身份验证后被删除,因此。Puppet在每次运行后都会创建该文件,因为它无法找到该文件。您没有回答我的“为什么”问题,只是重复了问题中已经介绍的内容。如果你想要一个适合你的情况的答案,那么我们需要了解情况。显然,我们在这里无法沟通。我问的是背景和大局,而不是你的哲学。在任何情况下,Puppet都不会保存已应用资源的记录。它根据系统的当前状态确定要执行的操作。最简单的方法是不删除文件,这样Puppet就可以使用文件的存在(可能还有内容)来确定是否下载新的副本。要实现您的目的,不要删除文件,而是清除文件,并将Puppet的“替换”文件属性设置为false。