Puppet:仅当文件存在时才使用文件资源

2024-06-03

我想做的很简单:

1.

Copy /source/file to /target/file。我使用以下方法实现此目的:

file { 'my_file_copy':
  ensure   => file,
  source   => 'file:/source/file',
  path     => "/target/file",
}

2.

但是,如果文件/source/file不存在,我不希望它执行此任务。

我真的很挣扎于这个逻辑。我尝试了下面的解决方案,但它在木偶运行期间引发异常。

puppet:如果一个文件存在,则复制另一个文件 https://stackoverflow.com/questions/31463506/puppet-if-one-file-exists-then-copy-another-file-over

有更好的方法来完成这项任务吗? 理想情况下,我想只使用“file”并避免使用“exec”。但在这一点上我会解决一个解决方案!


因为 Puppet 是一种声明性语言,仅声明最终状态,所以命令式逻辑(例如您所描述的 - if A, do X - 通常很难表达)。

就我个人而言,我会尝试简单地避免当且仅当文件 A 存在时复制文件 B 的要求。通常有更好的方法。

但是,如果需要保留该要求,那么在这里使用 Exec 对我来说听起来是一个不错的选择。

exec { 'my_file_copy':
  command => 'cp /source/file /target/file',
  onlyif  => 'test -e /source/file',
  creates => '/target/file',
  path    => '/bin',
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Puppet:仅当文件存在时才使用文件资源 的相关文章

  • puppet—批量部署mysql5.7+httpd[包含启动]

    httpd install pp class httpd install package httpd name gt httpd ensure gt installed httpd service pp class httpd servic
  • 对 epp 模板使用 puppet hash

    我在 erb 模板中有下一个代码 proxy cache path keys zone levels max size inactive 如何将其移植为 epp 模板 我发现这方面的信息很少 请帮忙 您可以按照以下方法执行此操作 显示
  • 处理带有空格的名称

    我的 Puppet 代理是 Windows Server 2012 我正在尝试向 AD 用户授予数据库权限 如果我尝试将权限分配给名称中不包含任何空格的 AD 用户 则该脚本可以正常工作 早些时候 不带空格的用户名也不起作用 但是当我添加额
  • 如何使用puppet为不同用户设置自定义bash环境?

    我刚刚开始使用 puppet 和 vagrant 为我们的团队设置开发环境 该团队由 8 名以上的开发人员组成 每个人都有其特定的 bash 配置等 我已经将所有软件安装在系统来快速部署新的开发虚拟机 但我不确定以自动化的方式为每个特定用户
  • 如何按角色拆分 hiera 配置?

    我正在使用 hiera 来分配类 例如webserver or dbserver到我的节点 这webserver类只包含 apache 并在其上设置一些配置 例如端口 显然我不想为每个节点复制这个配置 所以我把它放在 common yaml
  • 无法从库存服务检索事实:SSL_connect 返回=1 errno=0 状态=SSLv3

    我可以在木偶企业控制台中看到以下错误 Could not retrieve facts from inventory service SSL connect returned 1 errno 0 state SSLv3 read serve
  • 使用 awk sed 解析更新 puppet 文件

    我有一个包含多行代码的木偶文件 其中有一个部分如下所示 defaultrepo myrepo defaultbranch mybranch gitmod pullstuff othergitcode gitcommit gt b54123b
  • 更改木偶模块源

    我检查了 Puppet 的文档 但没有找到任何有关它的建议 我有木偶模块Monit https forge puppetlabs com dhoppe monit https forge puppetlabs com dhoppe moni
  • 如何在 Puppet 2.7 中将数组转换为逗号分隔的字符串

    我正在使用 Puppet 2 7 我需要将数组转换为逗号分隔列表 hosts fqdn host1 host2 host3 我需要将其转换为所需的结果 host1 host2 host3 我猜 Puppet 3 2 提供了 lambda 表
  • 使用 hiera 设置类参数?

    我试图弄清楚如何使用 hiera 设置类参数的值 我正在使用两个简单的类进行测试 testhiera 和 testhiera2 以下是这些课程 root puppet el7 001 modules cat testhiera manife
  • 如何用Vagrant处理Mysql、网站源等数据?

    如何使用 Vagrant 处理 Mysql 网站源等数据 作为一名程序员 我喜欢能够轻松设置开发环境 因此 我创建了一个流浪盒子并为其配置了木偶 但我问自己 盒子中的数据怎么样 如果我需要销毁盒子并重新创建它会怎样 我的所有数据都将被删除
  • 木偶在循环中添加数组元素

    我想要这样的东西 ssl domains dev mydomain com admin api web each site tom jeff harry each developer ssl domains lt lt site devel
  • 使用 Vagrant 管理开发和生产环境?

    人们如何使用 vagrant 最好来自同一个 vagrantfile 处理开发 生产环境的简单自动化 使用 puppet 我试图解决的用例 如果没有创建的话 我很乐意用 vagrant 来启动生产机器 如果在我的开发环境的 puppet 文
  • 如何在 Puppet 模板中包含子模板

    我正在尝试在我的 Puppet 模块之一的模板中包含一个子模板 以下是我在基本模板中执行包含操作的方法 如果我使用 erb 命令行工具渲染它 效果很好 然而 在 Puppet 运行期间 导入会被默默地忽略 即基本模板在渲染的子模板应在的位置
  • 木偶如何判断变量是否已设置

    在木偶类中 我应该如何测试变量是否已设置 现在我只是检查变量是否未定义 if http port undef run command run command http port http port 有没有更好的方法来检查变量是否已声明 如果
  • 如何更改 vagrant 安装的 puppet 版本

    我在 Precision32 Base Box 上使用 vagrant 1 0 1 来玩木偶 配置工作正常 我的清单正在执行 默认情况下 vagrant 在 guest 虚拟机上的 opt vagrant ruby bin puppet 下
  • Puppet - 在迭代哈希时,如果 hiera 中不存在,则在清单中设置默认值

    我正在迭代 hiera 哈希中的许多条目 并希望通过在清单中设置默认值 例如ensure groups managehome等 并且如果 hiera 中存在重复的键 值对 则覆盖默认值 到目前为止 我尝试过的所有方法都无法获得默认值 我知道
  • Vagrant+Puppet puppet.module_path 不起作用

    所以我的 Vagrant 文件设置如下 VAGRANTFILE API VERSION 2 Vagrant configure VAGRANTFILE API VERSION do config config vm box hashicor
  • Puppet 3 文件递归速度非常慢

    我在 Amazon Linux 2012 09 上使用 Puppet 3 我的清单之一设置并重新配置了一些目录 其中一项任务只是将文件夹所有者和组递归更改为另一个用户 然而 这需要 60 秒以上才能完成 并且目录中几乎没有任何内容 终端中的
  • Puppet:仅当文件存在时才使用文件资源

    我想做的很简单 1 Copy source file to target file 我使用以下方法实现此目的 file my file copy ensure gt file source gt file source file path

随机推荐