您知道在 EC2 上,没有与“ubuntu”用户关联的密码。如果我尝试运行以下几行:
fab 开发安装目录
我明白了:
[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 方法(根据 Can I prevent fabric from prompting me for a sudo password? ),但它没有任何改变
有什么想法吗?非常感谢!
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))
最佳答案
从 aws 下载(或创建) key 对文件,如下所示
创建一个名为 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。
关于Python Fabric 和 Amazon EC2 : Sudo password asked,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7381581/