예제 #1
0
 def get_ssh_key_file(self):
     if not self.ssh_key_file:
         ssh_dir = os.path.expanduser('~/.ssh')
         if os.path.isdir(ssh_dir):
             ssh_file = os.path.join(ssh_dir, '%s.pem' % self.key_name)
             if os.path.isfile(ssh_file):
                 self.ssh_key_file = ssh_file
         if not self.ssh_key_file:
             iobject = IObject()
             self.ssh_key_file = iobject.get_filename('Path to OpenSSH Key file')
     return self.ssh_key_file
예제 #2
0
 def get_ssh_key_file(self):
     if not self.ssh_key_file:
         ssh_dir = os.path.expanduser('~/.ssh')
         if os.path.isdir(ssh_dir):
             ssh_file = os.path.join(ssh_dir, '%s.pem' % self.key_name)
             if os.path.isfile(ssh_file):
                 self.ssh_key_file = ssh_file
         if not self.ssh_key_file:
             iobject = IObject()
             self.ssh_key_file = iobject.get_filename('Path to OpenSSH Key file')
     return self.ssh_key_file
예제 #3
0
 def bundle(self,
            bucket=None,
            prefix=None,
            key_file=None,
            cert_file=None,
            size=None,
            ssh_key=None):
     iobject = IObject()
     if not bucket:
         bucket = iobject.get_string('Name of S3 bucket')
     if not prefix:
         prefix = iobject.get_string('Prefix for AMI file')
     if not key_file:
         key_file = iobject.get_filename('Path to RSA private key file')
     if not cert_file:
         cert_file = iobject.get_filename('Path to RSA public cert file')
     if not size:
         size = iobject.get_int('Size (in MB) of bundled image')
     if not ssh_key:
         ssh_key = iobject.get_filename('Path to SSH Private Key')
     self.bundle_image(prefix, key_file, cert_file, size, ssh_key)
     self.upload_bundle(bucket, prefix, ssh_key)
     print 'registering image...'
     self.image_id = self.server.ec2.register_image('%s/%s.manifest.xml' %
                                                    (bucket, prefix))
     return self.image_id
예제 #4
0
    def get_ssh_client(self, key_file=None, host_key_file="~/.ssh/known_hosts", uname="root"):
        import paramiko

        if not self.instance:
            print "No instance yet!"
            return
        if not self._ssh_client:
            if not key_file:
                iobject = IObject()
                key_file = iobject.get_filename("Path to OpenSSH Key file")
            self._pkey = paramiko.RSAKey.from_private_key_file(key_file)
            self._ssh_client = paramiko.SSHClient()
            self._ssh_client.load_system_host_keys()
            self._ssh_client.load_host_keys(os.path.expanduser(host_key_file))
            self._ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            self._ssh_client.connect(self.instance.public_dns_name, username=uname, pkey=self._pkey)
        return self._ssh_client
예제 #5
0
 def get_ssh_client(self, key_file=None, host_key_file='~/.ssh/known_hosts',
                    uname='root'):
     import paramiko
     if not self.instance:
         print 'No instance yet!'
         return
     if not self._ssh_client:
         if not key_file:
             iobject = IObject()
             key_file = iobject.get_filename('Path to OpenSSH Key file')
         self._pkey = paramiko.RSAKey.from_private_key_file(key_file)
         self._ssh_client = paramiko.SSHClient()
         self._ssh_client.load_system_host_keys()
         self._ssh_client.load_host_keys(os.path.expanduser(host_key_file))
         self._ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
         self._ssh_client.connect(self.instance.public_dns_name,
                                  username=uname, pkey=self._pkey)
     return self._ssh_client
예제 #6
0
파일: server.py 프로젝트: bopopescu/boto-1
 def bundle(self,
            bucket=None,
            prefix=None,
            key_file=None,
            cert_file=None,
            size=None,
            ssh_key=None,
            fp=None,
            clear_history=True):
     iobject = IObject()
     if not bucket:
         bucket = iobject.get_string('Name of S3 bucket')
     if not prefix:
         prefix = iobject.get_string('Prefix for AMI file')
     if not key_file:
         key_file = iobject.get_filename('Path to RSA private key file')
     if not cert_file:
         cert_file = iobject.get_filename('Path to RSA public cert file')
     if not size:
         size = iobject.get_int('Size (in MB) of bundled image')
     if not ssh_key:
         ssh_key = self.server.get_ssh_key_file()
     self.copy_x509(key_file, cert_file)
     if not fp:
         fp = StringIO.StringIO()
     fp.write('sudo mv %s /mnt/boto.cfg; ' % BotoConfigPath)
     fp.write('mv ~/.ssh/authorized_keys /mnt/authorized_keys; ')
     if clear_history:
         fp.write('history -c; ')
     fp.write(self.bundle_image(prefix, size, ssh_key))
     fp.write('; ')
     fp.write(self.upload_bundle(bucket, prefix, ssh_key))
     fp.write('; ')
     fp.write('sudo mv /mnt/boto.cfg %s; ' % BotoConfigPath)
     fp.write('mv /mnt/authorized_keys ~/.ssh/authorized_keys')
     command = fp.getvalue()
     print 'running the following command on the remote server:'
     print command
     t = self.ssh_client.run(command)
     print '\t%s' % t[0]
     print '\t%s' % t[1]
     print '...complete!'
     print 'registering image...'
     self.image_id = self.server.ec2.register_image(
         name=prefix,
         image_location='%s/%s.manifest.xml' % (bucket, prefix))
     return self.image_id
예제 #7
0
 def bundle(self, bucket=None, prefix=None, key_file=None, cert_file=None, size=None, ssh_key=None):
     iobject = IObject()
     if not bucket:
         bucket = iobject.get_string('Name of S3 bucket')
     if not prefix:
         prefix = iobject.get_string('Prefix for AMI file')
     if not key_file:
         key_file = iobject.get_filename('Path to RSA private key file')
     if not cert_file:
         cert_file = iobject.get_filename('Path to RSA public cert file')
     if not size:
         size = iobject.get_int('Size (in MB) of bundled image')
     if not ssh_key:
         ssh_key = iobject.get_filename('Path to SSH Private Key')
     self.bundle_image(prefix, key_file, cert_file, size, ssh_key)
     self.upload_bundle(bucket, prefix, ssh_key)
     print 'registering image...'
     self.image_id = self.server.ec2.register_image('%s/%s.manifest.xml' % (bucket, prefix))
     return self.image_id
예제 #8
0
 def create_image(self, bucket=None, prefix=None, key_file=None, cert_file=None, size=None):
     iobject = IObject()
     if not bucket:
         bucket = iobject.get_string("Name of S3 bucket")
     if not prefix:
         prefix = iobject.get_string("Prefix for AMI file")
     if not key_file:
         key_file = iobject.get_filename("Path to RSA private key file")
     if not cert_file:
         cert_file = iobject.get_filename("Path to RSA public cert file")
     if not size:
         size = iobject.get_int("Size (in MB) of bundled image")
     self.bundle_image(prefix, key_file, cert_file, size)
     self.upload_bundle(bucket, prefix)
     print "registering image..."
     self.image_id = self.ec2.register_image("%s/%s.manifest.xml" % (bucket, prefix))
     return self.image_id
예제 #9
0
 def bundle(self, bucket=None, prefix=None, key_file=None, cert_file=None,
            size=None, ssh_key=None, fp=None, clear_history=True):
     iobject = IObject()
     if not bucket:
         bucket = iobject.get_string('Name of S3 bucket')
     if not prefix:
         prefix = iobject.get_string('Prefix for AMI file')
     if not key_file:
         key_file = iobject.get_filename('Path to RSA private key file')
     if not cert_file:
         cert_file = iobject.get_filename('Path to RSA public cert file')
     if not size:
         size = iobject.get_int('Size (in MB) of bundled image')
     if not ssh_key:
         ssh_key = self.server.get_ssh_key_file()
     self.copy_x509(key_file, cert_file)
     if not fp:
         fp = StringIO.StringIO()
     fp.write('sudo mv %s /mnt/boto.cfg; ' % BotoConfigPath)
     fp.write('mv ~/.ssh/authorized_keys /mnt/authorized_keys; ')
     if clear_history:
         fp.write('history -c; ')
     fp.write(self.bundle_image(prefix, size, ssh_key))
     fp.write('; ')
     fp.write(self.upload_bundle(bucket, prefix, ssh_key))
     fp.write('; ')
     fp.write('sudo mv /mnt/boto.cfg %s; ' % BotoConfigPath)
     fp.write('mv /mnt/authorized_keys ~/.ssh/authorized_keys')
     command = fp.getvalue()
     print 'running the following command on the remote server:'
     print command
     t = self.ssh_client.run(command)
     print '\t%s' % t[0]
     print '\t%s' % t[1]
     print '...complete!'
     print 'registering image...'
     self.image_id = self.server.ec2.register_image(name=prefix, image_location='%s/%s.manifest.xml' % (bucket, prefix))
     return self.image_id
예제 #10
0
    cfg = Config()
    cfg.add_config(file_url)

    for r in regions():
        if r.name == options.region:
            region = r
            break
    else:
        print("Region %s not found." % options.region)
        sys.exit(1)
    ec2 = boto.connect_ec2(region=region)
    if not options.nocred and not options.role:
        cfg.add_creds(ec2)

    iobj = IObject()
    if options.ami_id:
        ami = ec2.get_image(options.ami_id)
    else:
        ami_id = options.ami_id
        l = [(a, a.id, a.location) for a in ec2.get_all_images()]
        ami = iobj.choose_from_list(l, prompt='Choose AMI')

    if options.key_name:
        key_name = options.key_name
    else:
        l = [(k, k.name, '') for k in ec2.get_all_key_pairs()]
        key_name = iobj.choose_from_list(l, prompt='Choose Keypair').name

    if options.groups:
        groups = options.groups
    cfg = Config()
    cfg.add_config(file_url)

    for r in regions():
        if r.name == options.region:
            region = r
            break
    else:
        print("Region %s not found." % options.region)
        sys.exit(1)
    ec2 = boto.connect_ec2(region=region)
    if not options.nocred and not options.role:
        cfg.add_creds(ec2)

    iobj = IObject()
    if options.ami_id:
        ami = ec2.get_image(options.ami_id)
    else:
        ami_id = options.ami_id
        l = [(a, a.id, a.location) for a in ec2.get_all_images()]
        ami = iobj.choose_from_list(l, prompt='Choose AMI')

    if options.key_name:
        key_name = options.key_name
    else:
        l = [(k, k.name, '') for k in ec2.get_all_key_pairs()]
        key_name = iobj.choose_from_list(l, prompt='Choose Keypair').name

    if options.groups:
        groups = options.groups