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
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
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
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"
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"
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
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"
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
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
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
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
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
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]
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"
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
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
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"
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) # 이전 메뉴로 이동
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