我正在使用Vagrant和Puppet在Ubuntu上安装Apache和PHP。但是我在vagrant up
期间收到以下错误。我认为模板的路径是正确的,那么为什么会出错?
我使用经过修改的设置here来确保apt-get update
先于其他任何方式运行
错误
←[1;35merr: /Stage[main]/Php/File[/etc/php5/apache2/apc.ini]/ensure: change from
absent to present failed: Could not set 'present on ensure: No such file or dir
ectory - /etc/php5/apache2/apc.ini.puppettmp_6187 at /tmp/vagrant-puppet/modules
-0/php/manifests/init.pp:44←[0m
←[1;35merr: /Stage[main]/Php/File[/etc/php5/apache2/php.ini]/ensure: change from
absent to present failed: Could not set 'present on ensure: No such file or dir
ectory - /etc/php5/apache2/php.ini.puppettmp_6687 at /tmp/vagrant-puppet/modules
-0/php/manifests/init.pp:36←[0m
/modules/php/manifests/init.pp
file { "/etc/php5/apache2/php.ini":
ensure => present,
mode => 644,
content => template("php/etc/php5/conf.d/php.ini.erb"),
require => Package["php5"],
notify => Service["apache"];
}
file { "/etc/php5/apache2/apc.ini":
ensure => present,
mode => 644,
content => template("php/etc/php5/conf.d/apc.ini.erb"),
require => [ Package["php5"], Package["php-apc"], Package["apache"] ],
notify => Service["apache"];
}
模板
答案 0 :(得分:11)
确保目录/ etc / php5 / apache2存在。
file { [ "/etc", "/etc/php5", "/etc/php5/apache2" ]:
ensure => directory,
before => File['/etc/php5/apache2/php.ini'],
}
或者更少的Puppet-ish
exec { "ensure /etc/php5/apache2":
command => "mkdir -p /etc/php5/apache2",
creates => "/etc/php5/apache2"
}
所有这些可能是因为对执行顺序的假设。
更多信息@ puppet docs
答案 1 :(得分:1)
您确定Package [“php5”]正在为您创建路径吗?
在我看来,这是抱怨,因为/ etc / php5 / apache2文件夹在尝试从模板创建文件时不存在。
如果你想放弃你的puppetmaster方面,你可以找到puppetmaster进程ID并运行:
strace -v -f -ff -p $PID -o strace.log
然后,再次运行代理并转到puppetmaster并运行:
grep "etc/php5/apache2" strace.log.*
如果puppetmaster没问题,你会看到没有错误的阅读电话,否则你会看到puppetmaster在尝试打开文件时收到“没有这样的文件或目录”。无论如何,因为我不认为模板调用的问题,对我来说似乎没问题。