示例#1
0
def create_vpc():
    print("AWS VPC를 생성합니다.")
    print("AWS VPC 생성시 이름을 입력하세요 : ")
    vpcNm = input()  #생성될 object들의 접두사.
    #print("AWS VPC 의 IP 대역을 입력하세요. 예)10.5.0.0/16 ")
    vpc_ips = "10.5.0.0/16"  #default vpc cidr
    startNo = 5
    print("VPC Cidr을 찾고 있습니다.")
    vpc_ips = get_unregistered_vpcmax_cidr(5)
    print(vpc_ips + " IP 대역으로 Vpc를 생성합니다.")
    print("1.생성합니다. 2.IP 대역을 직접 입력합니다.")
    step1 = goMain.goPage_inputValCheck(
        selected_first_menu)  # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
    if step1 == "1":
        print("Vpc 생성을 시작합니다.")
    elif step1 == "2":
        while 0 < 1:
            print("IP 대역을 직접 입력해주세요. 예) 10.5.0.0/16")
            vpc_ips = goMain.goPage_inputValCheck(
                selected_first_menu)  # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
            ret_obj = search_vpcs_byCidr(vpc_ips)
            if len(ret_obj) > 0:
                print("입력하신 IP 대역이 이미 등록되어 있습니다. 다시 입력해주세요")
            else:
                break
    else:
        print("잘못 입력하셨습니다.")
        goMain.go_second_menu(selected_first_menu)

    command = 'aws ec2 create-vpc --cidr-block ' + vpc_ips + ' --query Vpc.VpcId --output text'
    credVpcId = cmdUtil.create_resource(command, vpcNm)
    print("Vpc 가 생성되었습니다.")
    retStr = {"vpcId": credVpcId, "cidr": vpc_ips}
    return retStr
示例#2
0
def select_vpc():
    vpcArr = []
    ret_obj = search_vpcs("search-all")
    if len(ret_obj) < 1:
        print("먼저 Vpc를 생성해 주세요.")
        goMain.go_second_menu(selected_first_menu)
    else:
        i = 0
        for vpcObj in ret_obj:
            i += 1
            vpcInfo = get_simple_vpc_info(vpcObj)
            vpcArr.append(vpcInfo)
            print(str(i) + "." + vpcInfo)
    selectedVpcNo = goMain.goPage_inputValCheck(
        selected_first_menu)  # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
    # 사용자가 입력한 번호가 vpc arr 보다 많으면 처음부터 다시 시작.
    if int(selectedVpcNo) > len(vpcArr):
        print("잘못 선택하셨습니다.")
        goMain.go_second_menu(selected_first_menu)
    # 선택한 번호에 맞는 vpcid를 변수에 저장합니다.
    selectedVpcInfoArr = []
    for index in range(len(vpcArr)):
        if selectedVpcNo == str(index + 1):
            selectedVpcInfoArr = (vpcArr[index]).split(' : ')
            break

    return selectedVpcInfoArr
示例#3
0
def select_subnet():
    ret_obj = search_subnets('search-all')
    objArr = []
    if len(ret_obj) < 1:
        print("먼저 Subnet을 생성해 주세요.")
        goMain.go_second_menu(selected_first_menu)
    else:
        i = 0
        for oneObj in ret_obj:
            i += 1
            objInfo = get_simple_subnet_info(oneObj)
            objArr.append(objInfo)
            print(str(i) + "." + objInfo)
    selectedNo = goMain.goPage_inputValCheck(
        selected_first_menu)  # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
    # 사용자가 입력한 번호가 vpc arr 보다 많으면 처음부터 다시 시작.
    if int(selectedNo) > len(objArr):
        print("잘못 선택하셨습니다.")
        goMain.go_second_menu(selected_first_menu)
    # 선택한 번호에 맞는 vpcid를 변수에 저장합니다.
    selectedObjInfoArr = []
    for index in range(len(objArr)):
        if selectedNo == str(index + 1):
            selectedObjInfoArr = (objArr[index]).split(' : ')
            break

    return selectedObjInfoArr
示例#4
0
def del_elb_listener():
    print("먼저 ELB를 선택합니다.")
    selectElbArr = select_elb()
    print("ELB 에 등록된 Port를 조회합니다.")
    objArr = select_elb_listeners(selectElbArr[0])

    print("삭제하실 Port를 선택하세요")
    while 1>0:
        selectPortNo=input()
        if (int(selectPortNo)-1)>len(objArr):
            print("잘못 선택하셨습니다. 다시 선택하세요.")
        else:
            selectedElbPort = objArr[(int(selectPortNo)-1)]
            selectedElbPortArr = selectedElbPort.split(" : ")
            print("선택하신 ("+selectedElbPort+")를 삭제하시겠습니까?(y/n)")
            nextStep2_YN=input()
            if nextStep2_YN.lower() == "y":
                command = 'aws elb delete-load-balancer-listeners --load-balancer-name '+selectElbArr[0]
                command = command +' --load-balancer-ports '+selectedElbPortArr[1]
                retStr = cmdUtil.exec_commd(command)
                break
            else:
                break

    if nextStep2_YN.lower() == "n":
        goMain.go_second_menu(selected_first_menu) # 이전 메뉴로 이동  

    return "success"    
示例#5
0
def start_instance():
    print("1.instance 리부팅 2.instance 시작")
    nextStep1_YN = goMain.goPage_inputValCheck(
        selected_first_menu)  # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
    search_instance_state = "running"
    comment_1 = "리부팅"
    commd_str = "reboot-instances"
    if nextStep1_YN == "2":
        search_instance_state = "stopped"
        commd_str = "start-instances"
        comment_1 = "시작"
    if nextStep1_YN != "1" and nextStep1_YN != "2":
        print("다시 선택해주세요.")
        start_instance()

    print("ec2 Instance를 선택해 주세요.")
    selectedObjInfoArr = select_ec2instance("", "", "", search_instance_state)
    print("(" + selectedObjInfoArr[0] + ")" + selectedObjInfoArr[4] +
          " instance 를 " + comment_1 + "하시겠습니까?(y/n)")
    nextStep2_YN = goMain.goPage_inputValCheck(
        selected_first_menu)  # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
    if nextStep2_YN[0] == 'Y' or nextStep2_YN[0] == 'y':
        command = "aws ec2 " + commd_str + " --instance-ids " + selectedObjInfoArr[
            4]
        retMsg = cmdUtil.exec_commd(command)
        print(comment_1 + " 요청이 완료되었습니다.")
        goMain.go_second_menu(selected_first_menu)
    else:
        goMain.go_second_menu(selected_first_menu)
    return "success"
示例#6
0
def search_elb():
    command = 'aws elb describe-load-balancers --query LoadBalancerDescriptions[*]'
    json_res = cmdUtil.getJson_exec_commd(command)
    objArr=[]
    if len(json_res) < 1:
        print("먼저 ELB 를 생성해주세요.")
        goMain.go_second_menu(selected_first_menu)
    else:
        for elbinfo in json_res:
            objArr.append(get_simple_elb_info(elbinfo))
    return objArr
示例#7
0
def set_elb_instance():
    print("먼저 ELB를 선택합니다.")
    selectElbArr = select_elb()    
    print("1.instance연결 2.instance 연결해제")
    inputNextStep=input()
    if inputNextStep == "1":
        register_Instance(selectElbArr[0], selectElbArr[3], selectElbArr[4])
    elif inputNextStep == "2":
        deregister_Instance(selectElbArr)
    else:
        print("잘못 선택하셨습니다.")
        goMain.go_second_menu(selected_first_menu) # 이전 메뉴로 이동
    return "success"
示例#8
0
def search_registered_Instance_with_elb(selectElbArr):
    if len(selectElbArr) < 1:
        print("먼저 ELB를 선택합니다.")
        selectElbArr = select_elb()
    print("ELB 에 연결된 Instance를 조회합니다.")
    if selectElbArr[2] == "":
        print("연결된 Instance가 존재하지 않습니다.")
        goMain.go_second_menu(selected_first_menu) # 이전 메뉴로 이동
    registeredInstancesArr = selectedObjInfoArr = myec2.select_ec2instance_byId(selectElbArr[2])
    regInstAndElbNmArr = []
    for idx, val in enumerate(registeredInstancesArr):
        regInstAndElbNmArr.append(val+" : "+selectElbArr[0])
        print(str(idx+1)+"."+val+" : "+selectElbArr[0])
    return regInstAndElbNmArr
示例#9
0
def search_all_gw_arr():
	ret_obj = search_gw()
	objArr=[]
	if len(ret_obj) < 1:
		print("먼저 Internet gateway를 생성해 주세요.")
		goMain.go_second_menu(selected_first_menu)
	else:
		i=0
		for oneObj in ret_obj:
			i+=1
			objInfo = get_simple_gw_info(oneObj)
			objArr.append(objInfo)
			print(objInfo)
	return objArr
示例#10
0
def search_all_subnets_arr():
    ret_obj = search_subnets("search-all")
    objArr = []
    if len(ret_obj) < 1:
        print("먼저 subnet을 생성해 주세요.")
        goMain.go_second_menu(selected_first_menu)
    else:
        i = 0
        for oneObj in ret_obj:
            i += 1
            objInfo = get_simple_subnet_info(oneObj)
            objArr.append(objInfo)
            print(objInfo)
    return objArr
示例#11
0
def search_all_sg_arr():
    ret_obj = search_sg("", "")
    objArr = []
    if len(ret_obj) < 1:
        print("먼저 Security group을 생성해 주세요.")
        goMain.go_second_menu(selected_first_menu)
    else:
        i = 0
        for oneObj in ret_obj:
            i += 1
            objInfo = get_simple_sg_info(oneObj)
            objArr.append(objInfo)
            print(str(i) + "." + objInfo)
    return objArr
示例#12
0
def search_all_vpcs_arr():
    ret_obj = search_vpcs("search-all")
    vpcArr = []
    if len(ret_obj) < 1:
        print("먼저 Vpc를 생성해 주세요.")
        goMain.go_second_menu(selected_first_menu)
    else:
        i = 0
        for vpcObj in ret_obj:
            i += 1
            vpcInfo = get_simple_vpc_info(vpcObj)
            vpcArr.append(vpcInfo)
            print(str(i) + "." + vpcInfo)
    return vpcArr
示例#13
0
def select_inoutBound():
    retArr = search_inoutBound("inout")
    print("p.처음으로 가기")
    selectNo = "0"
    while 1 > 0:
        print("삭제할 IN/OUT 정책을 선택합니다.")
        selectNo = goMain.goPage_inputValCheck(
            selected_first_menu)  # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
        if selectNo.lower() == "p":
            goMain.go_second_menu(selected_first_menu)
        elif int(selectNo) > len(retArr):
            print("잘못 선택하셨습니다.")
        else:
            break
    return retArr[int(selectNo) - 1]
示例#14
0
def remove_instance():
    print("삭제할 ec2 Instance를 선택해 주세요.")
    search_instance_state = "running,stopping,stopped"
    selectedObjInfoArr = select_ec2instance("", "", "", search_instance_state)
    print("(" + selectedObjInfoArr[0] + ")" + selectedObjInfoArr[4] +
          " instance 를 삭제하시겠습니까?(y/n)")
    nextStep2_YN = goMain.goPage_inputValCheck(
        selected_first_menu)  # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
    if nextStep2_YN[0] == 'Y' or nextStep2_YN[0] == 'y':
        command = "aws ec2 terminate-instances --instance-ids " + selectedObjInfoArr[
            4]
        retMsg = cmdUtil.exec_commd(command)
        print("삭제 요청이 완료되었습니다.")
        goMain.go_second_menu(selected_first_menu)
    else:
        goMain.go_second_menu(selected_first_menu)
    return "success"
示例#15
0
def create_gateway():
	print("Gateway를 생성합니다.")
	print("Gateway 생성시 이름을 입력하세요 : ")
	gwNm=goMain.goPage_inputValCheck(selected_first_menu) # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
	print("Gateway를 생성합니다.")		
	command = 'aws ec2 create-internet-gateway --query InternetGateway.InternetGatewayId --output text'
	credGwId = cmdUtil.create_resource(command, gwNm)
	print("Internet gateway가 생성되었습니다.")
	print("생성하신 Gateway와 Vpc를 연결하시겠습니까?(y/n)")
	nextStepYN=goMain.goPage_inputValCheck(selected_first_menu) # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
	if nextStepYN == 'Y' or nextStepYN == 'y':
		print("연결할 vpc를 선택하세요.")
		# 등록된 vpc 목록을 가져옵니다.
		selectedVpcInfoArr = myVpcs.select_vpc()
		attach_gw_to_vpc(credGwId, selectedVpcInfoArr[2])
	else:
		goMain.go_second_menu(selected_first_menu)
	retStr = {"GatewayId":credGwId,"vpcId":selectedVpcInfoArr[2]}
	return retStr
示例#16
0
def search_instance_image(searchStr):
    if searchStr == "":
        command = 'aws ec2 describe-images --owners amazon --filters "Name=name,Values=amzn2-ami-hvm-*-x86_64-gp2" "Name=state,Values=available" --query "reverse(sort_by(Images, &CreationDate))[:3]"'
    #elif (searchStr.lower()).contains("ubuntu"):
    elif "ubuntu" in searchStr.lower():
        command = 'aws ec2 describe-images --image-id ami-04876f29fd3a5e8ba ami-0ba5cd124d7a79612 ami-08508144e576d5b64 --query "reverse(sort_by(Images, &CreationDate))[:3]"'
    else:
        searchStr = "*" + searchStr + "*"
        command = 'aws ec2 describe-images --owners amazon --filters "Name=name,Values=' + searchStr + '" "Name=state,Values=available" --query "reverse(sort_by(Images, &CreationDate))[:3]"'

    ret_obj = cmdUtil.getJson_exec_commd(command)
    selectedObjInfoArr = []
    objArr = []
    if len(ret_obj) < 1:
        print("해당 이미지가 없습니다.")
        goMain.go_second_menu(selected_first_menu)
    else:
        i = 0
        for oneObj in ret_obj:
            i += 1
            objInfo = get_simple_image_info(oneObj)
            objArr.append(objInfo)
            print(str(i) + "." + objInfo)
    print("p.다시 검색해서 선택합니다.")
    selectedNo = goMain.goPage_inputValCheck(
        selected_first_menu)  # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
    # 사용자가 입력한 번호가 vpc arr 보다 많으면 처음부터 다시 시작.
    if selectedNo == "p" or selectedNo == "P":
        selectedObjInfoArr = "research"
    elif int(selectedNo) > len(objArr):
        print("잘못 선택하셨습니다. 처음부터 다시 시작합니다.")
        goMain.go_second_menu(selected_first_menu)
    else:
        # 선택한 번호에 맞는 vpcid를 변수에 저장합니다.
        selectedObjInfoArr = (objArr[int(selectedNo) - 1]).split(' : ')
    # for index in range(len(objArr)):
    # 	if selectedNo == str(index+1):
    # 		selectedObjInfoArr = (objArr[index]).split(' : ')
    # 		break

    return selectedObjInfoArr
示例#17
0
def deregister_Instance(selectElbArr):
    registeredInstancesArr = search_registered_Instance_with_elb(selectElbArr)
    print("연결해제할 instance를 선택하세요.")
    while 1>0:
        selectedInstNo=input()
        if int(selectedInstNo) > len(registeredInstancesArr):
            print("잘못 선택하셨습니다. 다시 선택해주세요.")
        else:
            objArr = (registeredInstancesArr[int(selectedInstNo)-1]).split(" : ")
            print("선택하신 instance("+objArr[0]+")를 ELB에서 연결해제 하시겠습니까?(y/n)")
            nextStep1_YN=input()
            if nextStep1_YN.lower() == "p":
                goMain.go_second_menu(selected_first_menu)
            if nextStep1_YN.lower() == "y":
                command = 'aws elb deregister-instances-from-load-balancer --load-balancer-name '+objArr[7]
                command = command+' --instances '+objArr[4]
                retStr = cmdUtil.exec_commd(command)
                print("연결된 instance를 해제했습니다.")
                break
            else:
                print("다시 선택해주세요.")        
    return "success"
示例#18
0
def add_elb_listener():
    print("먼저 ELB를 선택합니다.")
    selectElbArr = select_elb()
    print("ELB 에 등록된 Port를 조회합니다.")
    objArr = select_elb_listeners(selectElbArr[0])

    print("허용 Port를 추가하시겠습니까?(y/n)")
    nextStep2_YN=input()
    if nextStep2_YN.lower() == "n":
        goMain.go_second_menu(selected_first_menu) # 이전 메뉴로 이동

    print("Protocol을 선택하세요.")
    print("1.HTTP 2.TCP")
    inputProtocol="0"
    while 1>0:
        inputProtocol=input()
        if inputProtocol == "1" or inputProtocol == "2":
            if inputProtocol == "1":
                inputProtocol="HTTP"
            else:
                inputProtocol="TCP"
            break
        else:
            print("다시 선택해주세요.")
    print("ELB Port를 입력하세요.(예: 80)")
    inputElbPort=input()
    print("연결할 Instance의 Port를 입력하세요.(예: 80)")
    inputInstPort=input()
    print("추가 할 정보("+inputProtocol+" : "+inputElbPort+" : "+inputInstPort+")로 등록하시겠습니까?(y/n)")
    nextStep2_YN=input()
    if nextStep2_YN.lower() == "y":
        command = 'aws elb create-load-balancer-listeners --load-balancer-name '+selectElbArr[0]
        command = command+' --listeners "Protocol='+inputProtocol+',LoadBalancerPort='+inputElbPort+',InstanceProtocol='+inputProtocol+',InstancePort='+inputInstPort+'"'
        retStr = cmdUtil.exec_commd(command)
        print("ELB에 Port가 추가되었습니다.")
    else:
        goMain.go_second_menu(selected_first_menu) # 이전 메뉴로 이동   
示例#19
0
def create_subnet():
    print("AWS Subnet을 생성합니다.")
    print("Subnet 생성시 이름을 입력하세요 : ")
    subnetNm = goMain.goPage_inputValCheck(
        selected_first_menu)  # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
    print("Subnet을 생성할 Vpc를 선택합니다.")
    # 등록된 vpc 목록을 가져옵니다.
    selectedVpcInfoArr = myVpcs.select_vpc()
    #print(selectedVpcInfoArr)
    print("Subnet의 cidr-block을 선별하고 있습니다.")
    subnetCidrB = get_unregistered_subnetmax_cidr(selectedVpcInfoArr[2],
                                                  selectedVpcInfoArr[1])
    print(subnetCidrB + " cidr-block으로 subnet을 생성하시겠습니까?")
    print("1.생성합니다. 2.IP 대역을 직접 입력합니다.")
    step1 = goMain.goPage_inputValCheck(
        selected_first_menu)  # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
    if step1 == "1":
        print("subnet 생성 진행중입니다.")
    elif step1 == "2":
        print("IP 대역을 직접 입력해주세요. 예) " + subnetCidrB)
        subnetCidrB = goMain.goPage_inputValCheck(
            selected_first_menu)  # 입력시 p, x 입력시 이전 메뉴 또는 프로그램 종료 진행
        ret_obj = search_subnets_byCidr(selectedVpcInfoArr[2], subnetCidrB)
        if len(ret_obj) > 0:
            print("입력하신 IP 대역이 이미 등록되어 있습니다.")
            goMain.go_second_menu(selected_first_menu)
    else:
        print("잘못 입력하셨습니다. 프로그램을 다시 시작해주세요.")
        goMain.go_second_menu(selected_first_menu)

    command = 'aws ec2 create-subnet --vpc-id ' + selectedVpcInfoArr[
        2] + ' --cidr-block ' + subnetCidrB + ' --availability-zone ap-northeast-2a --query Subnet.SubnetId --output text'
    credSubnetId = cmdUtil.create_resource(command, subnetNm)
    print("subnet이 생성되었습니다.")
    retStr = {"SubnetId": credSubnetId, "cidr-block": subnetCidrB}
    return retStr