在 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
有谁知道我能做什么?
答案 0 :(得分:0)
我认为您的第二次更新几乎就在那里。问题是\
行上的结尾source
- 这是一个延续行,所以就好像你已经在同一行写了后续的mkvirtualenv
一样,给你像:
source /usr/local/bin/virtualenvwrapper.sh mkvirtualenv --no-site-packages --distribute #{node.default["params"]["vhost"]}
我相信source
通过mkvirtualenv
,其余作为virtualenvwrapper
脚本的参数 - 但我不认为这是您之前尝试判断的内容。尝试删除反斜杠,看看会发生什么。