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