玩Vagrant和python配方,我不知道如何使用python_virtualenv

时间:2013-05-30 13:59:31

标签: chef vagrant chef-recipe chef-solo

我的Vagrantfile看起来像这样(某些部分缺失):

Vagrant.configure("2") do |config|    
    # Provisioning
    config.vm.provision :chef_solo do |chef|
        chef.cookbooks_path = ["provisioning/chef/cookbooks"]
        chef.log_level = :debug
        chef.run_list = ["recipe[python]"]
    end
end

根据Opscode python recipe Readme,可以使用python_pip命令安装python包,使用python_virtualenv命令安装python virtualenvs。 如何将它们整合到我的Vagrantfile

1 个答案:

答案 0 :(得分:3)

pipvirtualenv已作为python的default食谱的一部分包含在内。通过指定recipe[python],您有效地加载了recipe[python::default] includes各自的安装方法,pip和virtualenv。{/ p>

为了使用python_pippython_virtualenv提供程序(顾名思义它们提供了功能),您只需将它们添加到自定义应用程序配方中,如cookbook的README文件中所建议的那样

python_pip "gunicorn"

python_virtualenv "/home/ubuntu/my_cool_ve" do
  owner "ubuntu"
  group "ubuntu"
  action :create
end

你需要创建自己的食谱/食谱。我建议首先要了解烹饪书的逻辑,但如果你想要启动,你可以使用像

这样的东西
cd to/your/cookbooks/directory
mkdir mycookbook
cd mycookbook
mkdir recipes
touch README.md
cat >recipes/default.rb <<-EOF
# create sample directory
directory "/tmp/xx"

python_pip "gunicorn"

python_virtualenv "/home/ubuntu/my_cool_ve" do
  owner "ubuntu"
  group "ubuntu"
  action :create
end

EOF

并将此食谱添加到运行列表recipe[mycookbook]

    chef.run_list = ["recipe[python]", "recipe[mycookbook]"]

不要忘记查看CookbooksGetting started with Chef

等资源