Python Fabric и Amazon EC2: запрос пароля Sudo - PullRequest
5 голосов
/ 12 сентября 2011

Вы знаете, что в EC2 нет пароля, связанного с пользователем "ubuntu". Со следующими строками, если я попытаюсь запустить:

потрясающая разработка install_dir

Я получаю:

[ec2-46-51-132-252.eu-west-1.compute.amazonaws.com] sudo: chown -R webadmin: webadmin / var / www [ec2-46-51-132-252.eu-west-1.compute.amazonaws.com] Пароль для входа:

Я пытался добавить shell = False к методу sudo (в соответствии с Могу ли я запретить Fabric запрашивать у меня пароль sudo? ), но это ничего не меняет

Есть идеи? Большое спасибо!

def development():
    env.envname = 'development'
    env.user = 'ubuntu'
    env.group = 'ubuntu'
    env.chuser = 'webadmin'
    env.chgroup = 'webadmin'
    env.hosts = ['ec2-***.eu-west-1.compute.amazonaws.com']
    env.envname_abriev = 'dev'
    env.key_filename = '/home/xx/.ssh/xx.pem'

    env.postgresql_version = '9.0'

def install_dir():
    if not exists('/var/www'):
        sudo('mkdir /var/www')
    sudo('chown -R %s:%s /var/www' % (env.chuser, env.chgroup))

Ответы [ 2 ]

4 голосов
/ 28 июня 2012

Загрузите (или создайте) файл пары ключей из aws, как показано ниже Download keypair from the highlighted section

Создайте файл с именем fabfile.py и установите его содержимое следующим образом:

from fabric.context_managers import cd
from fabric.operations import sudo
from fabric.api import run, env
import os

HOME = os.getenv('HOME')

env.user = 'ubuntu'
env.hosts = ['PUBLICDNS.ap-southeast-1.compute.amazonaws.com','ANOTHERSERVER.compute.amazonaws.com'] #can add multiple instances
env.key_filename = [
'%s/<your-keypair-file>.pem'%HOME
     ] #assuming keypair file is located in HOME

#example code we want to run on remote machine
def update():
    with cd('/var/www'):
            sudo('svn update')
                 with cd ('/var/www/cache'):
                       run('rm -rf *')
    sudo('service lighttpd restart')

Для запускафайл, введите fab update в терминале.

1 голос
/ 29 ноября 2011

Вам необходимо указать имя файла пары ключей, связанное с вашим экземпляром EC2, при запуске команды fab.

Использование: fab [options] <command>[:arg1,arg2=val2,host=foo,hosts='h1;h2',...] ...

Параметры:

-R ROLES, --roles=ROLES
                    comma-separated list of roles to operate on

-i KEY_FILENAME       path to SSH private key file. May be repeated.
...