Question

I am using Fabric to run the following:

def staging():
    """ use staging environment on remote host"""
    env.user = 'ubuntu'
    env.environment = 'staging'
    env.hosts = ['host.dev']
    _setup_path()

def bootstrap():
    """ initialize remote host environment (virtualenv, deploy, update) """
    require('root', provided_by=('staging', 'production'))
    run('mkdir -p %(root)s' % env)
    run('mkdir -p %s' % os.path.join(env.home, 'www', 'log'))
    create_virtualenv()
    deploy()
    update_requirements()

But I get this:

ubuntu@host.dev:~/projects/proj_name$ fab staging bootstrap
[host.dev] run: mkdir -p /home/ubuntu/www/staging
Password for ubuntu@host.dev: 

Why is Fabric asking for my password? This is the default ubuntu root user which has no password in the sudoers files. What's going on here?

Was it helpful?

Solution

meta: Just realized this question is still unanswered. I have no idea what really happened there but here's a guess.

This was probably caused by failing to use a keyfile when connecting to a machine where plaintext password SSH connection was disabled.

Proper usage would be:

fab -i keyfile.pem <fabric_task>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top