我有以下Puppet模块:
class resolvconf { $packages = ['resolvconf', 'dnsmasq'] package { $packages: ensure => installed, } file { '/etc/resolvconf/resolv.conf.d/base': ensure => file, owner => root, group => root, content => ' nameserver 127.0.0.1 nameserver 8.8.8.8 nameserver 8.8.4.4', } service { 'dnsmasq': require => Package[resolvconf], ensure => running, subscribe => File['/etc/resolvconf/resolv.conf.d/base'] } }
但是,当我运行configuration时,出现以下错误:
错误:/Stage[main]/Resolvconf/File[/etc/resolvconf/resolv.conf.d/base]/ensure:从缺席更改为文件失败:无法设置'文件确保:没有这样的文件或目录 – / etc / resolvconf / resolv.conf.d / base.puppettmp_4012 at /tmp/vagrant-puppet/modules-0/resolvconf/manifests/init.pp:13
我明白这意味着/etc/resolvconf/resolv.conf.d/base目前还不存在,或者无法创build。 这个问题似乎最终消失后,一些重新提供或重新启动,所以它似乎是某种依赖问题,我可以用适当的依赖关系或exec语句解决。
另外,由于这个失败的依赖,下面将无限期地挂起:
notice: /Stage[main]/Resolvconf/Service[dnsmasq]: Dependency File[/etc/resolvconf/resolv.conf.d/base] has failures: true warning: /Stage[main]/Resolvconf/Service[dnsmasq]: Skipping because of failed dependencies
或者至less在我点击CTRL-C之前 。
我需要在模块或清单中更改以允许脚本第一次正确运行?
添加一行以要求您的文件资源中的包如下所示:
file { '/etc/resolvconf/resolv.conf.d/base': ensure => file, owner => root, group => root, content => '... require => Package['resolvconf'], }
使用一个基本上被迫的木偶先执行包安装。
这当然假设resolvconf包的安装创build了所需的目录,我相信这确实发生了。