Esempio n. 1
0
def stop(instance_id, key_pair_name):
    try:
        instance_context = ECSInstanceContext(keyPairName=key_pair_name,
                                              instance_id=instance_id,
                                              need_public_ip=False)
        instance_context.close_server()
    except Exception as e:
        eprint("=== %s ===" % e)
        sys.exit(1)
Esempio n. 2
0
def start(instance_id, image_id, instance_type, key_pair_name, init_ssh_key,
          need_public_ip, security_group):
    params = {}
    if security_group:
        params["security_group"] = security_group

    try:
        if instance_id:
            instance_context = ECSInstanceContext(
                keyPairName=key_pair_name,
                instance_id=instance_id,
                need_public_ip=(need_public_ip == "true"))
        else:
            instance_context = ECSInstanceContext(
                keyPairName=key_pair_name,
                need_public_ip=(need_public_ip == "true"))

        instance_context.start_server(image_id=image_id,
                                      instance_type=instance_type,
                                      params=params,
                                      init_ssh_key=(init_ssh_key == "true"))
        print("instance_id:%s" % instance_context.instance_id)
        print("public_ip:%s" % instance_context.public_ip)
        print("intern_ip:%s" % instance_context.inter_ip)
    except Exception as e:
        eprint("=== %s ===" % e)
        sys.exit(1)
Esempio n. 3
0
def copy_to_local(instance_id, key_pair_name, execute_user, source, target):
    try:
        instance_context = ECSInstanceContext(keyPairName=key_pair_name,
                                              instance_id=instance_id,
                                              need_public_ip=False)
        instance_context.start_server(image_id=None,
                                      instance_type=None,
                                      init_ssh_key=False)
        if instance_context.is_ssh_server_ready():
            instance_context.copy_to_local(execute_user, source, target)
    except Exception as e:
        eprint("=== %s ===" % e)
        sys.exit(1)
Esempio n. 4
0
def exec_shell(instance_id, key_pair_name, script_file, execute_user,
               need_public_ip):
    try:
        import os
        instance_context = ECSInstanceContext(
            keyPairName=key_pair_name,
            instance_id=instance_id,
            need_public_ip=(need_public_ip == "true"))

        instance_context.start_server(image_id=None,
                                      instance_type=None,
                                      init_ssh_key=False)
        if instance_context.is_ssh_server_ready():
            with open(os.path.abspath(script_file), "r") as script_file:
                content = "\n".join(script_file.readlines())
                res = instance_context.execute_shell(content, execute_user)
                # show the result
                if res == -1:
                    sys.exit(1)
                if res != -1:
                    print(res.decode("utf-8"))
    except Exception as e:
        eprint("=== %s ===" % e)
        sys.exit(1)
Esempio n. 5
0
parser.add_argument('--source',
                    help='the path of script will be executed',
                    required=True)
parser.add_argument('--target',
                    help='the path of script will be executed',
                    required=True)
parser.add_argument(
    '--instance_id',
    help='If you already have a instance, please set thi parameter',
    required=True)
parser.add_argument('--execute_user',
                    help='the user will execute the command',
                    required=True)
parser.add_argument('--keyPairName', help='', required=True)

args = parser.parse_args()

print("-----%s %s" % (args.keyPairName, args.instance_id))
# cwd = os.getcwd()
instance_context = ECSInstanceContext(keyPairName=args.keyPairName,
                                      instance_id=args.instance_id,
                                      need_public_ip=True)

instance_context.start_server()
try:
    if instance_context.is_ssh_server_ready():
        instance_context.copy_to_local(args.execute_user, args.source,
                                       args.target)
except Exception as e:
    logger.exception("Something wrong is happened", exc_info=True)
Esempio n. 6
0
ECSInstanceContext will use it otherwise
will create a new one.
e.g.:

instance_context = ECSInstanceContext(instance_id="i-bp1i989udsn2r21nwi43", keyPairName="mlsql-build-env",
                                      need_public_ip=True)

keyPairName is required however we will create a keyPairName named `mlsql-build-env`
in your ~/.ssh/ by default if you do not provide it.

We use this keyPairName to login ecs instance with ssh.

If you need public ip then set need_public_ip  true(which is False by default), 
ECSInstanceContext will allocate a public ip for your instance, and will use the public ip to connect.
'''
instance_context = ECSInstanceContext(keyPairName="mlsql-build-env",
                                      need_public_ip=True)
try:
    # start server
    instance_context.start_server()
    '''
    Sometimes even the AliYun tell you that the server is running, the ssh server may
    still not be ready, you can use  is_ssh_server_ready to check if the ssh server ready.
    Once it's ready, you can use execute_shell to run script in your instance.
    Notice that we will convert your command to script file ,then transfer it with scp command,
    finally use ssh to execute remotely.
    '''
    if instance_context.is_ssh_server_ready():
        res = instance_context.execute_shell(
            "git clone https://github.com/allwefantasy/PyMLSQL.git .")
        # show the result
        print(res.decode("utf-8"))
Esempio n. 7
0
parser.add_argument(
    '--instance_id',
    help='If you already have a instance, please set thi parameter',
    required=True)
parser.add_argument('--execute_user',
                    help='the user will execute the command',
                    required=True)
parser.add_argument('--keyPairName', help='', required=True)

args = parser.parse_args()

if not args.script_path.endswith(".sh"):
    raise ValueError("script_path is not a script")
print("-----%s %s" % (args.keyPairName, args.instance_id))
# cwd = os.getcwd()
instance_context = ECSInstanceContext(keyPairName=args.keyPairName,
                                      instance_id=args.instance_id,
                                      need_public_ip=True)

instance_context.start_server()
try:
    if instance_context.is_ssh_server_ready():
        with open(os.path.abspath(args.script_path), "r") as script_file:
            content = "\n".join(script_file.readlines())
            res = instance_context.execute_shell(content, args.execute_user)
            # show the result
            if res != -1:
                print(res.decode("utf-8"))
except Exception as e:
    logger.exception("Something wrong is happened", exc_info=True)
Esempio n. 8
0
import logging
import os
from pymlsql.aliyun.dev.instance_context import ECSInstanceContext

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("build_mysql_server")

parser = argparse.ArgumentParser(description='run shell in new ECS instance.')
parser.add_argument(
    '--instance_id',
    help='If you already have a instance, please set thi parameter')
parser.add_argument('--image_id', help='image_id', required=True)
parser.add_argument('--keyPairName', help='', required=True)
parser.add_argument('--init_ssh_key', help='', required=True)
parser.add_argument('--instance_type', help='', required=True)
args = parser.parse_args()

# cwd = os.getcwd()
if args.instance_id:
    instance_context = ECSInstanceContext(keyPairName=args.keyPairName,
                                          instance_id=args.instance_id,
                                          need_public_ip=True)
else:
    instance_context = ECSInstanceContext(keyPairName=args.keyPairName,
                                          need_public_ip=True)

instance_context.start_server(image_id=args.image_id,
                              instance_type=args.instance_type,
                              init_ssh_key=(args.init_ssh_key == "true"))
print("instance_id:" + instance_context.instance_id)
Esempio n. 9
0
# -*- coding: utf-8 -*-

import argparse
import logging
import os
from pymlsql.aliyun.dev.instance_context import ECSInstanceContext

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("build_mysql_server")

parser = argparse.ArgumentParser(description='run shell in new ECS instance.')
parser.add_argument('--instance_id', help='If you already have a instance, please set this parameter', required=True)
parser.add_argument('--keyPairName', help='', required=True)

args = parser.parse_args()

# cwd = os.getcwd()
instance_context = ECSInstanceContext(keyPairName=args.keyPairName, instance_id=args.instance_id,
                                      need_public_ip=False)
instance_context.close_server()