3

我的 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 包和使用python_pip命令安装 python virtualenvs python_virtualenv。我怎样才能将它们集成到我的Vagrantfile?

4

1 回答 1

3

pipvirtualenv已经包含在 python 的配方default中。通过指定recipe[python]您有效加载的配方recipe[python::default],其中包括相应的安装方法、pip 和 virtualenv。

为了使用python_pippython_virtualenv提供者(顾名思义,它们提供功能),您只需将它们添加到您的自定义应用程序配方中,就像在食谱的 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]"]

不要忘记查看CookbooksChef 入门等资源

于 2013-05-30T14:27:43.817 回答