2015-02-19 3 views
1

В Chef-solo Я не могу понять, как выполнить команду от пользователя bash.Шеф-повар Run Virtualenv Bash

В Шеф-Соло на Vagrant, I положения и установить virtualenv, это работает, если я войти в систему и ввести $ virtualenv или $ virtualenvwrapper.

я не могу запустить его от Шеф-Соло получить эти работы:

Я попытался это, но ничего (без ошибок я могу видеть) не делать:

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 

I попытался это, но у него есть ошибки:

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 

Update

Я также пробовал это:

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

Просто интересно, почему у вас есть источник /usr/local/bin/virtualenvwrapper.sh | bash' в ресурсе выполнения? Когда вы запускаете 'bash', он разворачивает новую оболочку, и, вероятно, вы ничего не видите. Попробуйте выполнить ту же команду, что и в блоке 'bash'. –

+0

Поскольку мне нужен bash для выполнения, sh не будет работать. Я добавил еще одну попытку с bash выше. :) – JREAM

+0

Что происходит с обновленным ресурсом bash? –

ответ

0

Я думаю, что ваше второе обновление почти там. Проблема заключается в задней \ на source линии - это продолжение линии, так что это, как если бы вы написали последующее mkvirtualenv на той же строке, что дает вам такую ​​команду:

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

Я считаю, что source проходит mkvirtualenv, а остальные в качестве аргументов для вашего сценария virtualenvwrapper - но я не думаю, что это то, что вы планировали, судя по вашей предыдущей попытке. Попробуйте удалить эту обратную косую черту и посмотреть, что произойдет.

Смежные вопросы