我刚开始使用Vagrant和Puppet。我能够运行Virtualbox,但现在我想自动化安装在其上的软件。
在我的Vagrantfile中,我有:
Vagrant::Config.run do |config|
config.vm.box = "precise64"
config.vm.forward_port 80, 9090
config.vm.forward_port 27017, 27017
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "manifests"
puppet.manifest_file = "default.pp"
end
end
in manifests / default.pp我有:
Exec { path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ] }
class php5{
package { "php5":
ensure => present,
}
}
include php5
但是,当我运行vagrant up
时,我收到以下错误(代码段)。
[default] Running Puppet with /tmp/vagrant-puppet/manifests/default.pp...
stdin: is not a tty
No LSB modules are available.
warning: Could not retrieve fact fqdn
err: /Stage[main]/Php5/Package[php5]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install php5' returned 100: Reading package lists...
我不确定错误在哪里,所以这里有一些可能有用的进一步信息
Ruby版
$ ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]
宝石来源
$ gem sources
*** CURRENT SOURCES ***
http://rubygems.org/
更新1:关注此post我安装的facter和puppet现在运行正常,但主要问题仍然存在。
更新2:标记了正确答案,但我想分享整个清单文件http://pastebin.com/LGNhVPV7
答案 0 :(得分:2)
'apt-get install'错误可能正在发生,因为在Puppet尝试执行'apt-get install'之前,VM还没有完成'apt-get update'。当您请求安装软件包时,Puppet不会自行处理'apt-get update',但您可以说明它应该在您的清单中足够容易地发生。
尝试在他的http://johnleach.co.uk/words/771/puppet-dependencies-and-run-stages帖子中添加Leach先生提到的apt类。这应该确保在安装任何软件包之前运行'apt-get update'。