List of usage examples for com.amazonaws.services.ec2.model CreateTagsRequest withResources
public CreateTagsRequest withResources(java.util.Collection<String> resources)
The IDs of the resources, separated by spaces.
From source file:agentcoordinator.AgentCoordinator.java
private void launchAdditionalInstances(int numberOfInstance) { RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); runInstancesRequest.withImageId("ami-84c36bf3").withInstanceType("t2.micro").withMinCount(numberOfInstance) .withMaxCount(numberOfInstance).withSubnetId("subnet-a020fac5") .withKeyName("14 _LP1_KEY_ D7001D_CHASAT-4").withSecurityGroupIds("sg-cbc665ae") .withMonitoring(true);//from w w w .ja v a 2 s. com RunInstancesResult runInstancesResult = amazonEC2Client.runInstances(runInstancesRequest); Reservation myReservation = runInstancesResult.getReservation(); List<Instance> instanceList = myReservation.getInstances(); for (int i = 0; i < instanceList.size(); i++) { Instance instance = instanceList.get(i); instanceIDList.add(instance.getInstanceId()); //add to our list of instances ID //then tag them for easy finding CreateTagsRequest createTagsRequest = new CreateTagsRequest(); createTagsRequest.withResources(instance.getInstanceId()) .withTags(new Tag("Name", "SCAgent-TeamAsia-" + i)); amazonEC2Client.createTags(createTagsRequest); } }
From source file:com.appdynamics.connectors.AWSConnector.java
License:Apache License
public IMachine createMachine(IComputeCenter computeCenter, IImage image, IMachineDescriptor machineDescriptor) throws InvalidObjectException, ConnectorException { boolean succeeded = false; Exception createFailureRootCause = null; Instance instance = null;// w ww . j a va 2 s .c om try { IProperty[] macProps = machineDescriptor.getProperties(); AmazonEC2 connector = getConnector(image, computeCenter, controllerServices); String amiName = Utils.getAMIName(image.getProperties(), controllerServices); List<String> securityGroups = getSecurityGroup(macProps); validateAndConfigureSecurityGroups(securityGroups, connector); controllerServices.getStringPropertyByName(macProps, Utils.SECURITY_GROUP) .setValue(getSecurityGroupsAsString(securityGroups)); String keyPair = Utils.getKeyPair(macProps, controllerServices); InstanceType instanceType = getInstanceType(macProps); String zone = Utils.getZone(macProps, controllerServices); String kernel = Utils.getKernel(macProps, controllerServices); String ramdisk = Utils.getRamDisk(macProps, controllerServices); String controllerHost = System.getProperty(CONTROLLER_SERVICES_HOST_NAME_PROPERTY_KEY, InetAddress.getLocalHost().getHostName()); int controllerPort = Integer.getInteger(CONTROLLER_SERVICES_PORT_PROPERTY_KEY, DEFAULT_CONTROLLER_PORT_VALUE); IAccount account = computeCenter.getAccount(); String accountName = account.getName(); String accountAccessKey = account.getAccessKey(); AgentResolutionEncoder agentResolutionEncoder = new AgentResolutionEncoder(controllerHost, controllerPort, accountName, accountAccessKey); String userData = agentResolutionEncoder.encodeAgentResolutionInfo(); String instanceName = Utils.getInstanceName(macProps, controllerServices); logger.info("Starting EC2 machine of Image :" + amiName + " Name :" + instanceName + " security :" + securityGroups + " keypair :" + keyPair + " instance :" + instanceType + " zone :" + zone + " kernel :" + kernel + " ramdisk :" + ramdisk + " userData :" + userData); RunInstancesRequest runInstancesRequest = new RunInstancesRequest(amiName, 1, 1); runInstancesRequest.setSecurityGroups(securityGroups); runInstancesRequest.setUserData(Base64.encodeAsString(userData.getBytes())); runInstancesRequest.setKeyName(keyPair); runInstancesRequest.setInstanceType(instanceType); runInstancesRequest.setKernelId(kernel); runInstancesRequest.setRamdiskId(ramdisk); Reservation reservation = connector.runInstances(runInstancesRequest).getReservation(); List<Instance> instances = reservation.getInstances(); if (instances.size() == 0) throw new ConnectorException("Cannot create instance for image :" + image.getName()); instance = instances.get(0); //Set name for the instance if (!Strings.isNullOrEmpty(instanceName)) { CreateTagsRequest createTagsRequest = new CreateTagsRequest(); createTagsRequest.withResources(instance.getInstanceId()).withTags(new Tag("Name", instanceName)); connector.createTags(createTagsRequest); } logger.info("EC2 machine started; id:" + instance.getInstanceId()); IMachine machine; if (Strings.isNullOrEmpty(instance.getPublicDnsName())) { machine = controllerServices.createMachineInstance(instance.getInstanceId(), agentResolutionEncoder.getUniqueHostIdentifier(), computeCenter, machineDescriptor, image, getAgentPort()); } else { machine = controllerServices.createMachineInstance(instance.getInstanceId(), agentResolutionEncoder.getUniqueHostIdentifier(), instance.getPublicDnsName(), computeCenter, machineDescriptor, image, getAgentPort()); } if (kernel == null) { controllerServices.getStringPropertyByName(macProps, Utils.KERNEL).setValue(instance.getKernelId()); } if (zone == null) { DescribeAvailabilityZonesResult describeAvailabilityZonesResult = connector .describeAvailabilityZones(); List<AvailabilityZone> availabilityZones = describeAvailabilityZonesResult.getAvailabilityZones(); controllerServices.getStringPropertyByName(macProps, Utils.ZONE) .setValue(availabilityZones.get(0).getZoneName()); } controllerServices.getStringPropertyByName(macProps, Utils.INSTANCE_TYPE) .setValue(instance.getInstanceType()); succeeded = true; return machine; } catch (InvalidObjectException e) { createFailureRootCause = e; throw e; } catch (ConnectorException e) { createFailureRootCause = e; throw e; } catch (Exception e) { createFailureRootCause = e; throw new ConnectorException(e.getMessage(), e); } finally { // We have to make sure to terminate any orphan EC2 instances if // the machine create fails. if (!succeeded && instance != null) { try { ConnectorLocator.getInstance().getConnector(computeCenter, controllerServices) .terminateInstances( new TerminateInstancesRequest(Lists.newArrayList(instance.getInstanceId()))); } catch (Exception e) { throw new ConnectorException("Machine create failed, but terminate failed as well! " + "We have an orphan EC2 instance with id: " + instance.getInstanceId() + " that must be shut down manually. Root cause for machine " + "create failure is following: ", createFailureRootCause); } } } }
From source file:com.urbancode.terraform.tasks.aws.helpers.AWSHelper.java
License:Apache License
/** * * @param instanceId// w w w.jav a 2 s. c o m * @param tag * @param value * @param ec2Client */ public void tagInstance(String instanceId, String tag, String value, AmazonEC2 ec2Client) { //quick fix try { Thread.sleep(1000); } catch (InterruptedException e) { // swallow } CreateTagsRequest request = new CreateTagsRequest(); request = request.withResources(instanceId).withTags(new Tag(tag, value)); ec2Client.createTags(request); }
From source file:datameer.awstasks.ant.ec2.Ec2LaunchTask.java
License:Apache License
@Override public void doExecute(AmazonEC2 ec2) throws BuildException { LOG.info("executing " + getClass().getSimpleName() + " with groupName '" + _groupName + "'"); try {//from w ww. ja va 2 s. co m boolean instancesRunning = Ec2Util.findByGroup(ec2, _groupName, false, InstanceStateName.Pending, InstanceStateName.Running) != null; if (!isReuseRunningInstances() && instancesRunning) { throw new IllegalStateException("found already running instances for group '" + _groupName + "'"); } if (!Ec2Util.groupExists(ec2, _groupName)) { LOG.info("group '" + _groupName + "' does not exists - creating it"); String groupDescription = getGroupDescription(); if (groupDescription == null) { throw new BuildException("must specify groupDescription"); } ec2.createSecurityGroup(new CreateSecurityGroupRequest(_groupName, groupDescription)); } List<String> securityGroups = Arrays.asList("default", _groupName); List<IpPermission> existingPermissions = Ec2Util.getPermissions(ec2, securityGroups); for (GroupPermission groupPermission : _groupPermissions) { if (groupPermission.getToPort() == -1) { groupPermission.setToPort(groupPermission.getFromPort()); } if (!permissionExists(groupPermission, existingPermissions)) { LOG.info("did not found permission '" + groupPermission + "' - creating it..."); ec2.authorizeSecurityGroupIngress(new AuthorizeSecurityGroupIngressRequest() .withGroupName(_groupName).withIpPermissions(groupPermission.toIpPermission())); } } InstanceGroup instanceGroup = new InstanceGroupImpl(ec2); RunInstancesRequest launchConfiguration = new RunInstancesRequest(_ami, _instanceCount, _instanceCount); if (_kernelId != null) { launchConfiguration.setKernelId(_kernelId); } if (_ramDiskId != null) { launchConfiguration.setKernelId(_ramDiskId); } launchConfiguration.setKeyName(_privateKeyName); launchConfiguration.setSecurityGroups(securityGroups); if (_userData != null) { launchConfiguration.setUserData(Base64.encodeBase64String(_userData.getBytes())); } if (_instanceType != null) { launchConfiguration.setInstanceType(_instanceType); } launchConfiguration.setPlacement(new Placement(_availabilityZone)); if (instancesRunning) { instanceGroup.connectTo(_groupName); } else { instanceGroup.launch(launchConfiguration, TimeUnit.MINUTES, _maxStartTime); if (_instanceName != null) { LOG.info("tagging instances with name '" + _instanceName + " [<idx>]'"); int idx = 1; for (Instance instance : instanceGroup.getInstances(false)) { CreateTagsRequest createTagsRequest = new CreateTagsRequest(); createTagsRequest.withResources(instance.getInstanceId()) // .withTags(new Tag("Name", _instanceName + " [" + idx + "]")); ec2.createTags(createTagsRequest); idx++; } } } } catch (Exception e) { LOG.error("execution " + getClass().getSimpleName() + " with groupName '" + _groupName + "' failed: " + e.getMessage()); throw new BuildException(e); } }
From source file:de.unibi.cebitec.bibigrid.meta.aws.CreateClusterAWS.java
@Override public boolean launchClusterInstances() { log.info("Requesting master instance ..."); if (config.isUseSpotInstances()) { RequestSpotInstancesRequest masterReq = new RequestSpotInstancesRequest(); masterReq.withType(SpotInstanceType.OneTime).withInstanceCount(1).withLaunchGroup("lg_" + clusterId) .withSpotPrice(Double.toString(config.getBidPriceMaster())); LaunchSpecification masterLaunchSpecification = new LaunchSpecification(); masterLaunchSpecification/*from w ww. j a va2 s .c om*/ .withInstanceType(InstanceType.fromValue(this.config.getMasterInstanceType().getValue())) .withPlacement(spotInstancePlacement).withKeyName(this.config.getKeypair()) .withImageId(this.config.getMasterImage()).withUserData(base64MasterUserData) .withBlockDeviceMappings(masterDeviceMappings).withNetworkInterfaces(masterNetworkInterfaces); masterReq.setLaunchSpecification(masterLaunchSpecification); RequestSpotInstancesResult masterReqResult = ec2.requestSpotInstances(masterReq); List<SpotInstanceRequest> masterReqResponses = masterReqResult.getSpotInstanceRequests(); // collect all spotInstanceRequestIds ... List<String> spotInstanceRequestIds = new ArrayList<>(); for (SpotInstanceRequest requestResponse : masterReqResponses) { spotInstanceRequestIds.add(requestResponse.getSpotInstanceRequestId()); } // Tag spotrequest CreateTagsRequest ctr = new CreateTagsRequest(); ctr.withResources(spotInstanceRequestIds); ctr.withTags(bibigridid, username, new Tag().withKey("Name").withValue(PREFIX + "master-" + clusterId)); ec2.createTags(ctr); // Wait for spot request finished log.info("Waiting for master instance (spot request) to finish booting ..."); masterInstance = waitForInstances(waitForSpotInstances(spotInstanceRequestIds)).get(0); } else { RunInstancesRequest masterReq = new RunInstancesRequest(); masterReq.withInstanceType(InstanceType.fromValue(this.config.getMasterInstanceType().getValue())) .withMinCount(1).withMaxCount(1).withPlacement(instancePlacement) .withKeyName(this.config.getKeypair()).withImageId(this.config.getMasterImage()) .withUserData(base64MasterUserData).withBlockDeviceMappings(masterDeviceMappings) .withNetworkInterfaces(masterNetworkInterfaces); // mounting ephemerals RunInstancesResult masterReqResult = ec2.runInstances(masterReq); String masterReservationId = masterReqResult.getReservation().getReservationId(); masterInstance = masterReqResult.getReservation().getInstances().get(0); log.info("Waiting for master instance to finish booting ..."); ///////////////////////////////////////////// //// Waiting for master instance to run //// masterInstance = waitForInstances(Arrays.asList(new String[] { masterInstance.getInstanceId() })) .get(0); } log.info(I, "Master instance is now running!"); ModifyInstanceAttributeRequest ia_req = new ModifyInstanceAttributeRequest(); ia_req.setInstanceId(masterInstance.getInstanceId()); ia_req.setSourceDestCheck(Boolean.FALSE); ec2.modifyInstanceAttribute(ia_req); //////////////////////////////////// //// Tagging Master with a name //// CreateTagsRequest masterNameTagRequest = new CreateTagsRequest(); masterNameTagRequest.withResources(masterInstance.getInstanceId()).withTags(bibigridid, username, new Tag().withKey("Name").withValue(PREFIX + "master-" + clusterId)); ec2.createTags(masterNameTagRequest); /* * Waiting for Status Checks to finish * */ log.info("Waiting for Status Checks on master ..."); do { DescribeInstanceStatusRequest request = new DescribeInstanceStatusRequest(); request.setInstanceIds((Arrays.asList(new String[] { masterInstance.getInstanceId() }))); DescribeInstanceStatusResult response = ec2.describeInstanceStatus(request); InstanceStatus status = response.getInstanceStatuses().get(0); String instanceStatus = status.getInstanceStatus().getStatus(); String systemStatus = status.getSystemStatus().getStatus(); log.debug("Status of master instance: " + instanceStatus + "," + systemStatus); if (instanceStatus.equalsIgnoreCase("ok") && systemStatus.equalsIgnoreCase("ok")) { break; } else { log.info(V, "..."); sleep(10); } } while (true); log.info(I, "Status checks successful."); //////////////////////////////////////////////////////////////////////// ///// run slave instances and supply userdata ////////////////////////// if (config.getSlaveInstanceCount() > 0) { String base64SlaveUserData = UserDataCreator.forSlave(masterInstance.getPrivateIpAddress(), masterInstance.getPrivateDnsName(), slaveDeviceMapper, this.config, environment.getKeypair()); log.info(V, "Slave Userdata:\n{}", new String(Base64.decodeBase64(base64SlaveUserData))); if (config.isUseSpotInstances()) { RequestSpotInstancesRequest slaveReq = new RequestSpotInstancesRequest(); slaveReq.withType(SpotInstanceType.OneTime).withInstanceCount(config.getSlaveInstanceCount()) .withLaunchGroup("lg_" + clusterId).withSpotPrice(Double.toString(config.getBidPrice())); LaunchSpecification slaveLaunchSpecification = new LaunchSpecification(); slaveLaunchSpecification .withInstanceType(InstanceType.fromValue(this.config.getSlaveInstanceType().getValue())) .withPlacement(spotInstancePlacement).withKeyName(this.config.getKeypair()) .withImageId(this.config.getSlaveImage()).withUserData(base64SlaveUserData) .withBlockDeviceMappings(slaveBlockDeviceMappings) .withNetworkInterfaces(slaveNetworkInterfaces); slaveReq.setLaunchSpecification(slaveLaunchSpecification); RequestSpotInstancesResult slaveReqResult = ec2.requestSpotInstances(slaveReq); List<SpotInstanceRequest> slaveReqResponses = slaveReqResult.getSpotInstanceRequests(); // collect all spotInstanceRequestIds ... List<String> spotInstanceRequestIds = new ArrayList<>(); for (SpotInstanceRequest requestResponse : slaveReqResponses) { spotInstanceRequestIds.add(requestResponse.getSpotInstanceRequestId()); } // wait for a second try { Thread.sleep(1000); } catch (InterruptedException e) { } log.info(V, "tag spot request instances"); // tag spot requests (slave) CreateTagsRequest ctr = new CreateTagsRequest(); ctr.withResources(spotInstanceRequestIds); ctr.withTags(bibigridid, username, new Tag().withKey("Name").withValue(PREFIX + "slave-" + clusterId)); /* Setting tags for spot requests can cause an amazon service exception, if the spot request returns an id, but the id isn't registered in spot request registy yet. */ int counter = 0; boolean finished = false; while (!finished) { try { ec2.createTags(ctr); finished = true; } catch (AmazonServiceException ase) { if (counter < 5) { log.warn("{} ... try again in 10 seconds.", ase.getMessage()); try { Thread.sleep(10000); } catch (InterruptedException e) { } counter++; } else { throw ase; } } } log.info("Waiting for slave instance(s) (spot request) to finish booting ..."); // wait for spot request (slave) finished slaveInstances = waitForInstances(waitForSpotInstances(spotInstanceRequestIds)); } else { RunInstancesRequest slaveReq = new RunInstancesRequest(); slaveReq.withInstanceType(InstanceType.fromValue(this.config.getSlaveInstanceType().getValue())) .withMinCount(this.config.getSlaveInstanceCount()) .withMaxCount(this.config.getSlaveInstanceCount()).withPlacement(instancePlacement) .withKeyName(this.config.getKeypair()).withImageId(this.config.getSlaveImage()) .withUserData(base64SlaveUserData).withBlockDeviceMappings(slaveBlockDeviceMappings) .withNetworkInterfaces(slaveNetworkInterfaces); RunInstancesResult slaveReqResult = ec2.runInstances(slaveReq); String slaveReservationId = slaveReqResult.getReservation().getReservationId(); // create a list of all slave instances List<String> slaveInstanceListIds = new ArrayList<>(); for (Instance i : slaveReqResult.getReservation().getInstances()) { slaveInstanceListIds.add(i.getInstanceId()); } log.info("Waiting for slave instance(s) to finish booting ..."); slaveInstances = waitForInstances(slaveInstanceListIds); } ///////////////////////////////////////////// //// Waiting for master instance to run //// log.info(I, "Slave instance(s) is now running!"); //////////////////////////////////// //// Tagging all slaves with a name for (Instance si : slaveInstances) { CreateTagsRequest slaveNameTagRequest = new CreateTagsRequest(); slaveNameTagRequest.withResources(si.getInstanceId()).withTags(bibigridid, username, new Tag().withKey("Name").withValue(PREFIX + "slave-" + clusterId)); ec2.createTags(slaveNameTagRequest); } } else { log.info("No Slave instance(s) requested !"); } ////////////////////////////////// ////// post configure master configureMaster(); //////////////////////////////////// //// Human friendly output StringBuilder sb = new StringBuilder(); sb.append("\n You might want to set the following environment variable:\n\n"); sb.append("export BIBIGRID_MASTER=").append(masterInstance.getPublicIpAddress()).append("\n\n"); sb.append("You can then log on the master node with:\n\n").append("ssh -i ") .append(config.getIdentityFile()).append(" ubuntu@$BIBIGRID_MASTER\n\n"); sb.append("The cluster id of your started cluster is : ").append(clusterId).append("\n\n"); sb.append("The can easily terminate the cluster at any time with :\n").append("./bibigrid -t ") .append(clusterId).append(" "); if (getConfig().isAlternativeConfigFile()) { sb.append("-o ").append(config.getAlternativeConfigPath()).append(" "); } sb.append("\n"); log.info(sb.toString()); //////////////////////////////////// //// Grid Properties file if (getConfig().getGridPropertiesFile() != null) { Properties gp = new Properties(); gp.setProperty("BIBIGRID_MASTER", masterInstance.getPublicIpAddress()); gp.setProperty("IdentityFile", getConfig().getIdentityFile().toString()); gp.setProperty("clusterId", clusterId); if (getConfig().isAlternativeConfigFile()) { gp.setProperty("AlternativeConfigFile", config.getAlternativeConfigPath()); } try { gp.store(new FileOutputStream(getConfig().getGridPropertiesFile()), "Autogenerated by BiBiGrid"); } catch (IOException e) { log.error(I, "Exception while creating grid properties file : " + e.getMessage()); } } return true; }
From source file:de.unibi.cebitec.bibigrid.meta.aws.CreateClusterEnvironmentAWS.java
@Override public CreateClusterEnvironmentAWS createSecurityGroup() { CreateTagsRequest tagRequest = new CreateTagsRequest(); tagRequest.withResources(subnet.getSubnetId()).withTags(cluster.getBibigridid(), new Tag("Name", SUBNET_PREFIX + cluster.getClusterId())); cluster.getEc2().createTags(tagRequest); /////////////////////////////////////////////////////////////////////// ///// MASTERIP MASTERIP = SubNets.getFirstIP(subnet.getCidrBlock()); //////////////////////////////////////////////////////////////////////// ///// create security group with full internal access / ssh from outside log.info("Creating security group..."); CreateSecurityGroupRequest secReq = new CreateSecurityGroupRequest(); secReq.withGroupName(SECURITY_GROUP_PREFIX + cluster.getClusterId()).withDescription(cluster.getClusterId()) .withVpcId(vpc.getVpcId());/*from ww w . j a v a2 s . com*/ secReqResult = cluster.getEc2().createSecurityGroup(secReq); log.info(V, "security group id: {}", secReqResult.getGroupId()); UserIdGroupPair secGroupSelf = new UserIdGroupPair().withGroupId(secReqResult.getGroupId()); IpPermission secGroupAccessSsh = new IpPermission(); secGroupAccessSsh.withIpProtocol("tcp").withFromPort(22).withToPort(22).withIpRanges("0.0.0.0/0"); IpPermission secGroupSelfAccessTcp = new IpPermission(); secGroupSelfAccessTcp.withIpProtocol("tcp").withFromPort(0).withToPort(65535) .withUserIdGroupPairs(secGroupSelf); IpPermission secGroupSelfAccessUdp = new IpPermission(); secGroupSelfAccessUdp.withIpProtocol("udp").withFromPort(0).withToPort(65535) .withUserIdGroupPairs(secGroupSelf); IpPermission secGroupSelfAccessIcmp = new IpPermission(); secGroupSelfAccessIcmp.withIpProtocol("icmp").withFromPort(-1).withToPort(-1) .withUserIdGroupPairs(secGroupSelf); List<IpPermission> allIpPermissions = new ArrayList<>(); allIpPermissions.add(secGroupAccessSsh); allIpPermissions.add(secGroupSelfAccessTcp); allIpPermissions.add(secGroupSelfAccessUdp); allIpPermissions.add(secGroupSelfAccessIcmp); for (Port port : cluster.getConfig().getPorts()) { log.info("{}:{}", port.iprange, "" + port.number); IpPermission additionalPortTcp = new IpPermission(); additionalPortTcp.withIpProtocol("tcp").withFromPort(port.number).withToPort(port.number) .withIpRanges(port.iprange); allIpPermissions.add(additionalPortTcp); IpPermission additionalPortUdp = new IpPermission(); additionalPortUdp.withIpProtocol("udp").withFromPort(port.number).withToPort(port.number) .withIpRanges(port.iprange); allIpPermissions.add(additionalPortUdp); } AuthorizeSecurityGroupIngressRequest ruleChangerReq = new AuthorizeSecurityGroupIngressRequest(); ruleChangerReq.withGroupId(secReqResult.getGroupId()).withIpPermissions(allIpPermissions); tagRequest = new CreateTagsRequest(); tagRequest.withResources(secReqResult.getGroupId()).withTags(cluster.getBibigridid(), new Tag("Name", SECURITY_GROUP_PREFIX + cluster.getClusterId())); cluster.getEc2().createTags(tagRequest); cluster.getEc2().authorizeSecurityGroupIngress(ruleChangerReq); return this; }
From source file:dsmwatcher.DSMWatcher.java
License:Open Source License
public void isolateInstance(Instance instance, AmazonEC2Client ec2) throws Exception { Subnet targetIRSubnet = null;//from w ww . j a v a 2 s.c o m handleAutoScaledInstance(instance); //check for autoscaling, if autoscaled instance detach first // to prevent heathcheck failure and termination DescribeSubnetsRequest subnetRequest = new DescribeSubnetsRequest().withSubnetIds(instance.getSubnetId()); List<Subnet> sourceSubnet = ec2.describeSubnets(subnetRequest).getSubnets(); String targetAZStr = sourceSubnet.get(0).getAvailabilityZone(); for (String IRSubnet : IRSubnets) { subnetRequest = new DescribeSubnetsRequest().withSubnetIds(IRSubnet); if (targetAZStr .compareTo(ec2.describeSubnets(subnetRequest).getSubnets().get(0).getAvailabilityZone()) == 0) { targetIRSubnet = ec2.describeSubnets(subnetRequest).getSubnets().get(0); } } if (targetIRSubnet == null) { error("Unable to find an isolation subnet for instance " + instance.getInstanceId()); return; } List<InstanceNetworkInterface> ienis = instance.getNetworkInterfaces(); for (InstanceNetworkInterface ieni : ienis) { String eniTag = ""; List<GroupIdentifier> inititalSecGroups = ieni.getGroups(); for (GroupIdentifier secGroup : inititalSecGroups) { eniTag += secGroup.getGroupId() + ","; } eniTag = eniTag.substring(0, eniTag.length() - 1); DescribeNetworkInterfacesRequest netReq = new DescribeNetworkInterfacesRequest() .withNetworkInterfaceIds(ieni.getNetworkInterfaceId()); DescribeNetworkInterfacesResult netResult = ec2.describeNetworkInterfaces(netReq); List<com.amazonaws.services.ec2.model.NetworkInterface> enis = netResult.getNetworkInterfaces(); for (com.amazonaws.services.ec2.model.NetworkInterface eni : enis) { List<Tag> tagSet = eni.getTagSet(); Tag saveSGTag = new Tag().withKey("PreIsolationSG").withValue(eniTag); Tag isolationTag = new Tag().withKey("InIsolation").withValue("True"); tagSet.add(saveSGTag); tagSet.add(isolationTag); CreateTagsRequest ctr = new CreateTagsRequest().withResources(eni.getNetworkInterfaceId()) .withTags(tagSet); ec2.createTags(ctr); ModifyNetworkInterfaceAttributeRequest netReqest = new ModifyNetworkInterfaceAttributeRequest() .withNetworkInterfaceId(eni.getNetworkInterfaceId()).withGroups(denyAllSG); ec2.modifyNetworkInterfaceAttribute(netReqest); } } CreateNetworkInterfaceRequest newENIReq = new CreateNetworkInterfaceRequest() .withSubnetId(targetIRSubnet.getSubnetId()).withGroups(IRSecGrp); CreateNetworkInterfaceResult newENIResult = ec2.createNetworkInterface(newENIReq); AttachNetworkInterfaceRequest attachReq = new AttachNetworkInterfaceRequest() .withNetworkInterfaceId(newENIResult.getNetworkInterface().getNetworkInterfaceId()) .withInstanceId(instance.getInstanceId()) .withDeviceIndex(instance.getNetworkInterfaces().size() + 1); AttachNetworkInterfaceResult attachResults = ec2.attachNetworkInterface(attachReq); NetworkInterfaceAttachmentChanges attachTerm = new NetworkInterfaceAttachmentChanges() .withAttachmentId(attachResults.getAttachmentId()).withDeleteOnTermination(true); ModifyNetworkInterfaceAttributeRequest setDeleteOnTerm = new ModifyNetworkInterfaceAttributeRequest() .withAttachment(attachTerm) .withNetworkInterfaceId(newENIResult.getNetworkInterface().getNetworkInterfaceId()); ec2.modifyNetworkInterfaceAttribute(setDeleteOnTerm); CreateTagsRequest tagNewENIReq = new CreateTagsRequest(); List<Tag> isolationENITags = newENIResult.getNetworkInterface().getTagSet(); Tag newENITag = new Tag().withKey("IRENI").withValue("True"); isolationENITags.add(newENITag); tagNewENIReq.setTags(isolationENITags); tagNewENIReq.withResources(newENIResult.getNetworkInterface().getNetworkInterfaceId()); ec2.createTags(tagNewENIReq); }
From source file:fr.xebia.demo.amazon.aws.AmazonAwsInfrastructureMaker.java
License:Apache License
public List<Instance> createTravelEcommerceTomcatServers(Distribution distribution, DBInstance dbInstance, String jdbcUsername, String jdbcPassword, String warUrl) { String userData = buildUserData(distribution, dbInstance, jdbcUsername, jdbcPassword, warUrl); // CREATE EC2 INSTANCES RunInstancesRequest runInstancesRequest = new RunInstancesRequest() // .withInstanceType(distribution.getInstanceType()) // .withImageId(distribution.getAmiId()) // .withMinCount(2) // .withMaxCount(2) // .withSecurityGroupIds("tomcat") // .withPlacement(new Placement(dbInstance.getAvailabilityZone())) // .withKeyName("xebia-france") // .withUserData(userData) // ;/* w ww.ja va2 s .co m*/ RunInstancesResult runInstances = ec2.runInstances(runInstancesRequest); // TAG EC2 INSTANCES List<Instance> instances = runInstances.getReservation().getInstances(); int idx = 1; for (Instance instance : instances) { CreateTagsRequest createTagsRequest = new CreateTagsRequest(); createTagsRequest.withResources(instance.getInstanceId()) // .withTags(// new Tag("Name", "travel-ecommerce-" + idx), // new Tag("Type", distribution.name().toLowerCase())); ec2.createTags(createTagsRequest); idx++; } logger.info("Created {}", instances); return instances; }
From source file:fr.xebia.demo.amazon.aws.PetclinicInfrastructureEnforcer.java
License:Apache License
public List<Instance> createTomcatServers(DBInstance dbInstance, String applicationIdentifier, String jdbcUsername, String jdbcPassword, String warUrl, String rootContext, Distribution... distributions) { LOGGER.info("ENFORCE TOMCAT SERVERS"); List<Instance> instances = Lists.newArrayList(); for (Distribution distribution : distributions) { String userData = buildCloudInitUserData(distribution, dbInstance, jdbcUsername, jdbcPassword, warUrl, rootContext);//from w w w .ja v a 2 s.c om // CREATE EC2 INSTANCES RunInstancesRequest runInstancesRequest = new RunInstancesRequest() // .withInstanceType(distribution.getInstanceType().toString()) // .withImageId(distribution.getAmiId()) // .withMinCount(1) // .withMaxCount(1) // .withSecurityGroupIds("tomcat") // .withKeyName("xebia-france") // .withUserData(userData) // ; RunInstancesResult runInstances = ec2.runInstances(runInstancesRequest); instances.addAll(runInstances.getReservation().getInstances()); } // TAG EC2 INSTANCES int idx = 1; for (Instance instance : instances) { CreateTagsRequest createTagsRequest = new CreateTagsRequest(); createTagsRequest.withResources(instance.getInstanceId()) // .withTags( // new Tag("Name", applicationIdentifier + "-" + idx), // new Tag("Role", applicationIdentifier), // new Tag("Distribution", Distribution.fromAmiId(instance.getImageId()).name())); ec2.createTags(createTagsRequest); idx++; } LOGGER.info("Created {}", instances); return instances; }
From source file:fr.xebia.training.troubleshooting.TroubleshootingTrainingInfrastructureCreator.java
License:Apache License
public List<Instance> launchTomcatServers(DBInstance petclinicDatabase, String applicationId, String jdbcUsername, String jdbcPassword, Collection<String> teamIdentifiers) { AmazonAwsUtils.terminateInstancesByRole("training,troubleshooting,tomcat", ec2); String userData = buildCloudInitUserData(petclinicDatabase, jdbcUsername, jdbcPassword); // FIXME : use M1SMALL logger.warn("FIXME : use M1SMALL"); // CREATE EC2 INSTANCES RunInstancesRequest runInstancesRequest = new RunInstancesRequest() // .withInstanceType(InstanceType.T1Micro.toString())// .withImageId("ami-6c3f0d18") // .withMinCount(teamIdentifiers.size()) // .withMaxCount(teamIdentifiers.size()) // .withSecurityGroupIds("accept-all") // .withKeyName("training-troubleshooting") // .withUserData(userData) // ;/* w w w.j ava 2 s . c o m*/ RunInstancesResult runInstances = ec2.runInstances(runInstancesRequest); List<Instance> instances = runInstances.getReservation().getInstances(); // TAG EC2 INSTANCES Iterator<String> teamIdentifierIterator = teamIdentifiers.iterator(); for (Instance instance : instances) { String teamIdentifier = teamIdentifierIterator.next(); CreateTagsRequest createTagsRequest = new CreateTagsRequest(); createTagsRequest.withResources(instance.getInstanceId()) // .withTags(// new Tag("Name", applicationId + "-" + teamIdentifier), // new Tag("Role", "training,troubleshooting,tomcat"), // new Tag("TeamIdentifier", teamIdentifier), // new Tag("TrainingSession", "Troubleshooting")); ec2.createTags(createTagsRequest); } logger.info("Created {}", instances); return instances; }