diff --git a/secdep.py b/secdep.py index 32c4b88..2afce28 100755 --- a/secdep.py +++ b/secdep.py @@ -938,22 +938,14 @@ def create_node(provider, name=None, location=None, size=None, image=None, confi confirm = input("Continue? ") # Any input other than yes does not continue the node creation assert confirm == "yes", "User did not confirm" - # In the case of gce the driver does not accept the auth parameter so we must create the node using the deploy node function if provider == "gce": - # node = driver.create_node(name, size, image, location, ex_service_accounts=sa_scopes) - # SCRIPT = """ - # #!/usr/bin/env bash - # useradd -G sudo -m secdep - # echo "secdep:secdeppass" | chpasswd - # mkdir -p /home/secdep/.ssh - # """ - # step = ScriptDeployment(SCRIPT) node = driver.create_node(name=name, image=image, size=size, location=location, ex_service_accounts=sa_scopes, ex_metadata=metadata) - # node = driver.deploy_node(name=name, image=image, size=size, location=location, deploy=step, ex_service_accounts=sa_scopes, ex_metadata=metadata, ssh_key=SECDEP_SSH_PRIVATE_KEY) elif provider == "azure": node = driver.create_node(name, size, image, location, auth=auth) else: - # driver.import_key_pair_from_string("secdep@"+socket.gethostname(), pubkey) + driver.import_key_pair_from_string("secdep@"+socket.gethostname(), pubkey) + driver.ex_authorize_security_group_permissive('default') + keyname="secdep@"+socket.gethostname() SCRIPT = '''#!/usr/bin/env bash useradd -G sudo -m secdep echo "secdep:secdeppass" | chpasswd @@ -963,30 +955,20 @@ def create_node(provider, name=None, location=None, size=None, image=None, confi step_1 = SSHKeyDeployment(pubkey) step_2 = ScriptDeployment(SCRIPT) msd = MultiStepDeployment([step_1, step_2]) - node = driver.deploy_node(name=name, image=image, size=size, deploy=msd, ssh_key=SECDEP_SSH_PRIVATE_KEY) + node = driver.deploy_node(name=name, image=image, size=size, ex_keyname=keyname, deploy=msd, ssh_key=SECDEP_SSH_PRIVATE_KEY) + print('stdout: %s' % (step_2.stdout)) + print('stderr: %s' % (step_2.stderr)) + print('exit_code: %s' % (step_2.exit_status)) else: # When the -y or --yes parameter is passed we go straight to the node creation if provider == "gce": - # SCRIPT = '''#!/usr/bin/env bash - # useradd -G sudo -m secdep - # echo "secdep:secdeppass" | chpasswd - # echo "%sudo ALL=(ALL:ALL) ALL" >> /etc/sudoers - # mkdir -p /home/secdep/.ssh''' - # step = ScriptDeployment(SCRIPT) node = driver.create_node(name=name, image=image, size=size, location=location, ex_service_accounts=sa_scopes, ex_metadata=metadata) - # node = driver.deploy_node(name=name, image=image, size=size, location=location, deploy=step, ex_service_accounts=sa_scopes, ex_metadata=metadata, ssh_key=SECDEP_SSH_PRIVATE_KEY) - # if provider == "aws": - # SCRIPT = '''#!/usr/bin/env bash - # useradd -G sudo -m secdep - # echo "secdep:secdeppass" | chpasswd - # echo "%sudo ALL=(ALL:ALL) ALL" >> /etc/sudoers - # mkdir -p /home/secdep/.ssh''' - # step = ScriptDeployment(SCRIPT) - # elif provider == "azure": node = driver.create_node(name, size, image, location, auth=auth) else: - # driver.import_key_pair_from_string("secdep@"+socket.gethostname(), pubkey) + driver.import_key_pair_from_string("secdep@"+socket.gethostname(), pubkey) + driver.ex_authorize_security_group_permissive('default') + keyname="secdep@"+socket.gethostname() SCRIPT = '''#!/usr/bin/env bash useradd -G sudo -m secdep echo "secdep:secdeppass" | chpasswd @@ -996,7 +978,7 @@ def create_node(provider, name=None, location=None, size=None, image=None, confi step_1 = SSHKeyDeployment(pubkey) step_2 = ScriptDeployment(SCRIPT) msd = MultiStepDeployment([step_1, step_2]) - node = driver.deploy_node(name=name, image=image, size=size, deploy=msd, ssh_key=SECDEP_SSH_PRIVATE_KEY) + node = driver.deploy_node(name=name, image=image, size=size, ex_keyname=keyname, deploy=msd, ssh_key=SECDEP_SSH_PRIVATE_KEY) print('stdout: %s' % (step_2.stdout)) print('stderr: %s' % (step_2.stderr)) print('exit_code: %s' % (step_2.exit_status)) @@ -1063,14 +1045,6 @@ def delete_node(): else: print("%s node could not be deleted" % (providerName.upper())) -#elif node.state == "running": - -# def get_provider_features(provider): -# driver = get_corresponding_driver(provider); -# print(driver.features['create_node']) -# -# get_provider_features("azure") - # If -p -q or -G is passed, provider must be passed as well if args.listimages or args.listsizes or args.listlocations: assert args.provider is not None, "Provider must be passed if listing images, sizes or locations" @@ -1112,14 +1086,9 @@ if args.list: if args.delete: delete_node() exit(0) - - # env = { - # 'gce_key': gce_key, - # 'gce_secret': gce_secret, - # 'azure_key': azure_key, - # 'azure_secret': azure_secret, - # 'aws_key': aws_key, - # 'aws_secret': aws_secret - # } - # with open('.env', 'w') as f: - # json.dump(env, f) +if args.image or args.size or args.name or args.region or args.yes and not args.create: + print("Image, size, name, region and yes parameters only go along with the create flag") + exit(0) +# if args.create and not args.provider: +# print("Provider must be specified in oder to use the create action") +# exit(0)