我正在运行Vagrant并尝试使用Puppet配置该框。 Puppet似乎永远不会运行。当我配置它时,我看到:
$ vagrant provision
==> default: Running provisioner: puppet...
==> default: Running Puppet with default.pp...
==> default: stdin: is not a tty
==> default: notice: Finished catalog run in 0.03 seconds
我的木偶文件(默认为manifests/default.pp
):
class base {
Package { ensure => "installed" }
package {
"python-pip":
ensure => "latest";
}
}
我的流浪档案:
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "hashicorp/precise32"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "private_network", ip: "192.168.33.10"
config.ssh.forward_agent = true
config.vm.provision "puppet" # defaults to manifests/default.pp
config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
end
当我尝试运行pip:
vagrant@precise32:~$ pip
The program 'pip' is currently not installed. You can install it by typing:
sudo apt-get install python-pip
为什么pip没有安装?我的Vagrant文件,我的木偶文件或我的设置有问题吗?有任何想法吗?我遵循了入门步骤,这似乎正是他们所拥有的。我正在使用Vagrant 1.6.3。
答案 0 :(得分:4)
看起来您的manifests/default.pp
只是定义了一个类base
,但它实际上从未声明过它(通过include base
)。它是使其“运行”的类声明。
来自Puppet documentation on Classes:
定义一个类使其可供以后使用。它还没有向目录添加任何资源;要做到这一点,你必须声明它(见下文)或从ENC分配。
因此,您应该只需稍后在base
中致电include base
即可让manifests/default.pp
课程开始投放。
或者,在这个简单的场景中,你甚至不需要一个base
课......你可以只有manifests/default.pp
说:
Package { ensure => "installed" }
package {
"python-pip":
ensure => "latest";
}