2016-04-21 35 views
1

我試圖執行一個腳本與流浪+木偶部署後:流浪+木偶:部署命令後執行腳本沒有找到

include nginx 
    $nginx_conf_path = "${files_path}/${fqdn}/etc/nginx/sites-available" 
    nginx::site { 'test.example.com.conf' : 
    source => "${nginx_conf_path}/test.example.com.conf", 
    } 

    exec { 'install-letsencrypt.sh test.example.com': 
    require => [Nginx::Site['test.example.com.conf'], Class['profile::ssl']], 
    command => 'install-letsencrypt.sh test.example.com', 
    path => '/home/vagrant/bin/' 
    } 

ssl.pp

class profile::ssl { 

    file { "/home/vagrant/bin" : 
    ensure => "directory", 
    owner => "vagrant", 
    group => "vagrant", 
    } 

    file { "/home/vagrant/bin/install-letsencrypt.sh": 
    ensure => "present", 
    owner => "vagrant", 
    group => "vagrant", 
    mode => 700, 
    source => "puppet:///modules/example/shared/install-letsencrypt.sh" 
    } 
} 

而且install-letsencrypt.sh

if [ ! -d "/opt/letsencrypt" ]; then 
    sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt 
fi 
# ...etc 

profile::ssl工程,因爲/home/vagrant/bin/install-letsencrypt.sh是可用的,但是當我嘗試exec它的傀儡,我得到:

==> test.example.com: Error: Deploying Let's encrypt for test.mojjo.fr 
==> test.example.com: /home/vagrant/bin/install-letsencrypt.sh: line 11: sudo: command not found 
==> test.example.com: /home/vagrant/bin/install-letsencrypt.sh: line 14: mkdir: command not found 
==> test.example.com: /home/vagrant/bin/install-letsencrypt.sh: line 17: sudo: command not found 
==> test.example.com: /home/vagrant/bin/install-letsencrypt.sh: line 23: sudo: command not found 
==> test.example.com: /home/vagrant/bin/install-letsencrypt.sh: line 25: sudo: command not found 

我在做什麼錯?我嘗試了絕對可執行路徑(/usr/bin/sudo而不是sudo),但它也不起作用。如果我ssh test.example.com並在那裏運行,它也可以工作,所以問題不在腳本中。

在此先感謝

回答

0

我有同樣的問題,運行一些腳本,所以我做

exec { 'run-script': 
    command => "bash -c 'install-letsencrypt.sh test.example.com'", 
    .... 
    } 
+0

感謝您的幫助。我仍然得到'/ bin/bash:install-letsencrypt.sh:command not found'。我嘗試了'command =>「/ bin/bash -c'install-letsencrypt.sh test.mojjo.fr'」'並使用'command =>「bash -c'install-letsencrypt.sh test.mojjo.fr' 「,path =>'/ bin'' ... –

+0

然後放腳本'/ home/vagrant/bin/install-letsencrypt.sh'的完整路徑並確保vagrant正在運行腳本'user =>'vagrant '' –

+0

'user =>'vagrant''做了訣竅。謝謝。不知道是否需要'/ bin/bash' ... –