厨师跑Virtualenv猛击

时间:2015-02-19 13:59:50

标签: bash chef chef-recipe chef-solo

Chef-solo 中,我无法弄清楚如何从用户bash运行命令

在Chef-Solo on Vagrant中,我提供并安装了 virtualenv ,如果我登录并输入$ virtualenv$ virtualenvwrapper,它就可以使用。

我无法从Chef-Solo中运行它来使这些工作:

我尝试了这个,但它没有做任何事情(我没看错):

execute 'mkvirtualenv' do
    user node.default["username"]
    group node.default["username"]
    command "source /usr/local/bin/virtualenvwrapper.sh | bash && mkvirtualenv --no-site-packages --distribute /home/#{node.default["username"]}/projects/#{node.default["params"]["vhost"]} | bash"
end

我试过了,但它有错误:

bash 'mkvirtualenv' do
    cwd "/home/#{node.default['username']}/projects/"
    user node.default["username"]
    environment ({
        'HOME' => '/home/#{node.default["username"]}'
    })
    code "source /usr/local/bin/virtualenvwrapper.sh && mkvirtualenv --no-site-packages --distribute #{node.default["params"]["vhost"]}"
end

更新

我也试过这个:

bash 'mkvirtualenv' do
    cwd "/home/#{node.default["username"]}/projects/"
    user node.default["username"]
    environment ({
        'HOME' => ::Dir.home(node.default['username']),
        'USER' => node.default['username']
    })
    code <<-EOH
        source /usr/local/bin/virtualenvwrapper.sh \
        mkvirtualenv --no-site-packages --distribute #{node.default["params"]["vhost"]}
    EOH
end

有谁知道我能做什么?

1 个答案:

答案 0 :(得分:0)

我认为您的第二次更新几乎就在那里。问题是\行上的结尾source - 这是一个延续行,所以就好像你已经在同一行写了后续的mkvirtualenv一样,给你像:

这样的命令
source /usr/local/bin/virtualenvwrapper.sh mkvirtualenv --no-site-packages --distribute #{node.default["params"]["vhost"]}

我相信source通过mkvirtualenv,其余作为virtualenvwrapper脚本的参数 - 但我不认为这是您之前尝试判断的内容。尝试删除反斜杠,看看会发生什么。