2016-09-08 6 views
0

ファブリックを使用してリモートマシン上にいくつかのアプリケーションを展開したいと思います。このために、私はファブリックを使ってVCS(bitbucketまたはgithub)からbashスクリプトを取り出して実行します。しかし、私のスクリプトの最初のステップは、現在のユーザーをsudoersに追加することです。そのため、パスワードを要求されます。ファブリックは、sudoのパスワードを尋ねるbashスクリプトを実行します - このパスワードを送る方法

このパスワードをファブファイルまたはfabコマンド内で送信することはできますか。

コードの一部:

bashの代わりに "実行" 機能の

sudo tee /etc/sudoers.d/$USER <<END 
END 
file=/usr/share/MyCompagny/mybashscript.sh 
sudo touch $file 
sudo echo 'blablabla' >> $file 
sudo /bin/rm /etc/sudoers.d/$USER 
sudo -k 

fabfile

def deploy(): 
    env.hosts = ['192.168.100.160'] 
    source_folder = '/home/username/src' 
    branch = 'dev' 
    puts('Pulling changes from branch <{}>'.format(branch)) 
    projects = ['data', 'report'] 
    for project in projects: 
     current_path = os.path.join(source_folder, 'package.{}'.format(project)) 
     with cd(current_path): 
      puts('Current path: {}'.format(current_path)) 
      # Discard all pending changes 
      run('git checkout -- .') 
      # Checkout the right branch 
      run('git checkout {}'.format(branch)) 
      # Pull changes 
      run('git pull origin_ssh {}'.format(branch)) 
    puts('Install with bash script') 
    with cd(source_folder): 
     run('./mybashscript.sh') 

答えて

0

使用ファブリックの "sudoを" 機能。スクリプトはsudo特権で実行されているので、パスワードを要求しません。

def deploy(): 
    env.hosts = ['192.168.100.160'] 
    source_folder = '/home/username/src' 
    branch = 'dev' 
    puts('Pulling changes from branch <{}>'.format(branch)) 
    projects = ['data', 'report'] 
    for project in projects: 
     current_path = os.path.join(source_folder, 'package.{}'.format(project)) 
     with cd(current_path): 
     puts('Current path: {}'.format(current_path)) 
     # Discard all pending changes 
     sudo('git checkout -- .') 
     # Checkout the right branch 
     sudo('git checkout {}'.format(branch)) 
     # Pull changes 
     sudo('git pull origin_ssh {}'.format(branch)) 
     puts('Install with bash script') 
     with cd(source_folder): 
     sudo('./mybashscript.sh') 

希望すると助かります!

関連する問題