2016-09-08 4 views
0

Я хочу использовать ткань для развертывания приложения на удаленных компьютерах. Для этого я использую ткань для извлечения сценария bash из VCS (битбакет или github) и выполняет его. Однако первым шагом моего скрипта является добавление текущего пользователя в sudoers, поэтому меня просят ввести пароль.Fabric запускает скрипт bash, который запрашивает пароль sudo - Как отправить этот пароль

Можно ли отправить этот пароль в файл или в команду fab или ...?

Часть кода:

Баш функции вместо функции "выполнения"

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.

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') 

Надеюсь, это поможет!