2012-06-04 2 views
4

Мое развертывание сборки и производства подключается с помощью клавиш одним пользователем, конкретным пользователем, который используется совместно с развертыванием и ключами, скопированными во время разгона машины.Ткань: делать все как конкретный пользователь

Этот пользователь разворачивает, имеет общие ключи ssh, разрешающие ssh на любую машину-прод и между ними.

Теперь моя ткань строится как пользователь Jenkins.

Как Поручаю ткань, чтобы выполнить все, как конкретного пользователя (развернуть в данном случае)? Эквивалент sudo su deploy

Я не хочу, чтобы сделать prefix или with в каждой задаче. Скорее установите глобальную переменную.

Дженкинс в группе колеса и имеет SUDO завивки

ответ

7

Если я правильно понимаю ваш вопрос, вы хотите выполнять команды как другой пользователь без использования префикса или с.

Функция sudo принимает пользователя, который может быть глобальной переменной, если хотите.

Из документов:

fabric.operations.sudo(command, shell=True, pty=True, 
         combine_stderr=True, user=None, 
         quiet=False, stdout=None, stderr=None) 

Вы можете просто вызвать свои задачи с

sudo(command, user=sudouser) 

и установите sudouser в 'развертывании' в другом месте.

На самом деле, это ничем не отличается от использования контекста:

with settings(sudo_user=sudouser): 
     sudo(command) 

В обоих случаях, вы должны быть в состоянии изменить этот sudo_user глобально.