List of usage examples for com.amazonaws.services.ec2.model Placement Placement
public Placement(String availabilityZone)
From source file:virtualIT.java
License:Open Source License
private void runInstance(String keyName, String securityGroupName, int instanceCount, String availableZone) throws Exception { /********************************************* * //from w w w.j a va 2s .c om * #6 Create an Instance * *********************************************/ System.out.println("#5 Create an Instance"); String imageId = "ami-ab844dc2";//Basic 32-bit Amazon Linux AMI String instanceType = "t1.micro"; int minInstanceCount = instanceCount; // create 1 instance int maxInstanceCount = instanceCount; Placement placement = new Placement(availableZone); RunInstancesRequest instanceRun = new RunInstancesRequest(); instanceRun.withImageId(imageId).withInstanceType(instanceType).withMinCount(minInstanceCount) .withMaxCount(maxInstanceCount).withKeyName(keyName).withPlacement(placement) .withSecurityGroups(securityGroupName); RunInstancesResult result = ec2.runInstances(instanceRun); Thread.currentThread(); Thread.sleep(100000); }
From source file:virtualIT.java
License:Open Source License
private void StartUsingOldAmi(int userId) throws Exception { /*Run instances */ String imageId = mapUserImage.get(userId); System.out.println("Old Instance"); Placement placement = new Placement(availableZone); RunInstancesRequest instanceRun = new RunInstancesRequest(); instanceRun.withImageId(imageId).withInstanceType("t1.micro").withMinCount(1).withMaxCount(1) .withPlacement(placement).withKeyName(keyName).withSecurityGroups(securityGroupName); RunInstancesResult result = ec2.runInstances(instanceRun); describeCurrentInstances(userId);//from www. ja v a2s.c om AttachVolume(userId); }
From source file:com.norbl.cbp.ppe.Ec2Wrangler.java
License:Open Source License
private void setAvailabilityZone(RunInstancesRequest req, String zone) { try {/*from ww w . j a v a 2 s . co m*/ Placement p = new Placement(zone); req.setPlacement(p); } catch (Exception xxx) { ExceptionHandler.display(xxx); } }
From source file:com.xebialabs.overcast.host.Ec2CloudHost.java
License:Apache License
protected String runInstance() { RunInstancesRequest run = new RunInstancesRequest(amiId, 1, 1); run.withInstanceInitiatedShutdownBehavior("terminate"); if (amiInstanceType != null) { run.withInstanceType(amiInstanceType); }// w w w. j av a2 s . co m if (amiSecurityGroup != null) { run.withSecurityGroups(amiSecurityGroup); } if (amiKeyName != null) { run.withKeyName(amiKeyName); } if (amiAvailabilityZone != null) { run.withPlacement(new Placement(amiAvailabilityZone)); } RunInstancesResult result = ec2.runInstances(run); return result.getReservation().getInstances().get(0).getInstanceId(); }
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 w w . ja v a 2s. com 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 CreateClusterAWS configureClusterMasterInstance() { // done for master. More volume description later when master is running //////////////////////////////////////////////////////////////////////// /////////////// preparing blockdevicemappings for master//////////////// Map<String, String> masterSnapshotToMountPointMap = this.config.getMasterMounts(); int ephemerals = config.getMasterInstanceType().getSpec().ephemerals; DeviceMapper masterDeviceMapper = new DeviceMapper(config.getMode(), masterSnapshotToMountPointMap, ephemerals);/*from w ww. j a va2s .c o m*/ masterDeviceMappings = new ArrayList<>(); // create Volumes first if (!this.config.getMasterMounts().isEmpty()) { log.info(V, "Defining master volumes"); masterDeviceMappings = createBlockDeviceMappings(masterDeviceMapper); } List<BlockDeviceMapping> ephemeralList = new ArrayList<>(); for (int i = 0; i < this.config.getMasterInstanceType().getSpec().ephemerals; ++i) { BlockDeviceMapping temp = new BlockDeviceMapping(); String virtualName = "ephemeral" + i; String deviceName = "/dev/sd" + ephemeral(i); temp.setVirtualName(virtualName); temp.setDeviceName(deviceName); ephemeralList.add(temp); } masterDeviceMappings.addAll(ephemeralList); base64MasterUserData = UserDataCreator.masterUserData(masterDeviceMapper, this.config, environment.getKeypair()); log.info(V, "Master UserData:\n {}", new String(Base64.decodeBase64(base64MasterUserData))); ////////////////////////////////////////////////////////////////////////// /////// create Placementgroup //////////////////// if (this.config.getMasterInstanceType().getSpec().clusterInstance) { if (config.isUseSpotInstances()) { spotInstancePlacement = new SpotPlacement(config.getAvailabilityZone()); spotInstancePlacement.setGroupName(environment.getPlacementGroup()); } else { instancePlacement = new Placement(this.config.getAvailabilityZone()); instancePlacement.setGroupName(environment.getPlacementGroup()); } } ////////////////////////////////////////////////////////////////////////// /////// create NetworkInterfaceSpecification for MASTER instance with FIXED internal IP and public ip masterNetworkInterfaces = new ArrayList<>(); inis = new InstanceNetworkInterfaceSpecification(); inis.withPrivateIpAddress(environment.getMASTERIP()).withGroups(environment.getSecReqResult().getGroupId()) .withAssociatePublicIpAddress(true).withSubnetId(environment.getSubnet().getSubnetId()) .withDeviceIndex(0); masterNetworkInterfaces.add(inis); // add eth0 slaveNetworkInterfaces = new ArrayList<>(); inis = new InstanceNetworkInterfaceSpecification(); inis.withGroups(environment.getSecReqResult().getGroupId()) .withSubnetId(environment.getSubnet().getSubnetId()) .withAssociatePublicIpAddress(config.isPublicSlaveIps()).withDeviceIndex(0); slaveNetworkInterfaces.add(inis); return this; }
From source file:eu.stratosphere.nephele.instance.ec2.EC2CloudManager.java
License:Apache License
/** * Requests (allocates) instances (VMs) from Amazon EC2. * /*from w ww . j a v a 2 s . com*/ * @param awsAccessId * the access ID into AWS * @param awsSecretKey * the secret key used to generate signatures for authentication * @param instancesToBeRequested * Map containing desired instances types and count * @param sshKeyPair * Optional parameter to insert an EC2 SSH key/value pair * @return * List containing the instance IDs of the allocated instances. */ private LinkedList<String> allocateCloudInstance(final Configuration conf, final InstanceType type, final int mincount, final int maxcount) { final String awsAccessId = conf.getString(AWS_ACCESS_ID_KEY, null); final String awsSecretKey = conf.getString(AWS_SECRET_KEY_KEY, null); final String imageID = conf.getString(AWS_AMI_KEY, null); LOG.info("Read Amazon Machine Image from job configuration: " + imageID); final String jobManagerIPAddress = GlobalConfiguration.getString("jobmanager.rpc.address", null); if (jobManagerIPAddress == null) { LOG.error("JobManager IP address is not set (jobmanager.rpc.address)"); return null; } final String sshKeyPair = conf.getString("job.ec2.sshkeypair", null); final AmazonEC2Client ec2client = EC2ClientFactory.getEC2Client(awsAccessId, awsSecretKey); final LinkedList<String> instanceIDs = new LinkedList<String>(); // Iterate over instance types.. final RunInstancesRequest request = new RunInstancesRequest(imageID, mincount, maxcount); request.setInstanceType(type.getIdentifier()); // Set availability zone if configured String av = null; if (this.availabilityZone != null) { av = this.availabilityZone; } final String jobAV = conf.getString("job.ec2.availabilityzone", null); if (jobAV != null) { LOG.info("Found " + jobAV + " as job-specific preference for availability zone"); av = jobAV; } if (av != null) { request.setPlacement(new Placement(av)); } // TODO: Make this configurable! final BlockDeviceMapping bdm = new BlockDeviceMapping(); bdm.setVirtualName("ephemeral0"); bdm.setDeviceName("/dev/sdb1"); if (sshKeyPair != null) { request.setKeyName(sshKeyPair); } final LinkedList<BlockDeviceMapping> bdmlist = new LinkedList<BlockDeviceMapping>(); bdmlist.add(bdm); request.setBlockDeviceMappings(bdmlist); // Setting User-Data parameters request.setUserData(EC2Utilities.createTaskManagerUserData(jobManagerIPAddress)); // Request instances! try { final RunInstancesResult result = ec2client.runInstances(request); for (Instance i : result.getReservation().getInstances()) { instanceIDs.add(i.getInstanceId()); } } catch (AmazonClientException e) { // Only log the error here LOG.error(StringUtils.stringifyException(e)); } return instanceIDs; }
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) // ;// ww w . ja v a 2s . c o 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:hudson.plugins.ec2.SlaveTemplate.java
License:Open Source License
/** * Provisions an On-demand EC2 slave by launching a new instance or * starting a previously-stopped instance. *//* w w w . j a v a 2 s . c o m*/ private EC2AbstractSlave provisionOndemand(TaskListener listener) throws AmazonClientException, IOException { PrintStream logger = listener.getLogger(); AmazonEC2 ec2 = getParent().connect(); try { String msg = "Launching " + ami + " for template " + description; logger.println(msg); LOGGER.info(msg); KeyPair keyPair = getKeyPair(ec2); RunInstancesRequest riRequest = new RunInstancesRequest(ami, 1, 1); InstanceNetworkInterfaceSpecification net = new InstanceNetworkInterfaceSpecification(); if (useEphemeralDevices) { setupEphemeralDeviceMapping(riRequest); } else { setupCustomDeviceMapping(riRequest); } List<Filter> diFilters = new ArrayList<Filter>(); diFilters.add(new Filter("image-id").withValues(ami)); if (StringUtils.isNotBlank(getZone())) { Placement placement = new Placement(getZone()); if (getUseDedicatedTenancy()) { placement.setTenancy("dedicated"); } riRequest.setPlacement(placement); diFilters.add(new Filter("availability-zone").withValues(getZone())); } if (StringUtils.isNotBlank(getSubnetId())) { if (getAssociatePublicIp()) { net.setSubnetId(getSubnetId()); } else { riRequest.setSubnetId(getSubnetId()); } diFilters.add(new Filter("subnet-id").withValues(getSubnetId())); /* If we have a subnet ID then we can only use VPC security groups */ if (!securityGroupSet.isEmpty()) { List<String> group_ids = getEc2SecurityGroups(ec2); if (!group_ids.isEmpty()) { if (getAssociatePublicIp()) { net.setGroups(group_ids); } else { riRequest.setSecurityGroupIds(group_ids); } diFilters.add(new Filter("instance.group-id").withValues(group_ids)); } } } else { /* No subnet: we can use standard security groups by name */ riRequest.setSecurityGroups(securityGroupSet); if (securityGroupSet.size() > 0) diFilters.add(new Filter("instance.group-name").withValues(securityGroupSet)); } String userDataString = Base64.encodeBase64String(userData.getBytes()); riRequest.setUserData(userDataString); riRequest.setKeyName(keyPair.getKeyName()); diFilters.add(new Filter("key-name").withValues(keyPair.getKeyName())); riRequest.setInstanceType(type.toString()); diFilters.add(new Filter("instance-type").withValues(type.toString())); if (getAssociatePublicIp()) { net.setAssociatePublicIpAddress(true); net.setDeviceIndex(0); riRequest.withNetworkInterfaces(net); } boolean hasCustomTypeTag = false; HashSet<Tag> inst_tags = null; if (tags != null && !tags.isEmpty()) { inst_tags = new HashSet<Tag>(); for (EC2Tag t : tags) { inst_tags.add(new Tag(t.getName(), t.getValue())); diFilters.add(new Filter("tag:" + t.getName()).withValues(t.getValue())); if (StringUtils.equals(t.getName(), EC2Tag.TAG_NAME_JENKINS_SLAVE_TYPE)) { hasCustomTypeTag = true; } } } if (!hasCustomTypeTag) { if (inst_tags == null) { inst_tags = new HashSet<Tag>(); } inst_tags.add(new Tag(EC2Tag.TAG_NAME_JENKINS_SLAVE_TYPE, "demand")); } DescribeInstancesRequest diRequest = new DescribeInstancesRequest(); diFilters.add(new Filter("instance-state-name").withValues(InstanceStateName.Stopped.toString(), InstanceStateName.Stopping.toString())); diRequest.setFilters(diFilters); msg = "Looking for existing instances with describe-instance: " + diRequest; logger.println(msg); LOGGER.fine(msg); DescribeInstancesResult diResult = ec2.describeInstances(diRequest); Instance existingInstance = null; if (StringUtils.isNotBlank(getIamInstanceProfile())) { riRequest.setIamInstanceProfile( new IamInstanceProfileSpecification().withArn(getIamInstanceProfile())); // cannot filter on IAM Instance Profile, so search in result reservationLoop: for (Reservation reservation : diResult.getReservations()) { for (Instance instance : reservation.getInstances()) { if (instance.getIamInstanceProfile() != null && instance.getIamInstanceProfile().getArn().equals(getIamInstanceProfile())) { existingInstance = instance; break reservationLoop; } } } } else if (diResult.getReservations().size() > 0) { existingInstance = diResult.getReservations().get(0).getInstances().get(0); } if (existingInstance == null) { // Have to create a new instance Instance inst = ec2.runInstances(riRequest).getReservation().getInstances().get(0); /* Now that we have our instance, we can set tags on it */ if (inst_tags != null) { for (int i = 0; i < 5; i++) { try { updateRemoteTags(ec2, inst_tags, inst.getInstanceId()); break; } catch (AmazonServiceException e) { if (e.getErrorCode().equals("InvalidInstanceRequestID.NotFound")) { Thread.sleep(5000); continue; } throw e; } } // That was a remote request - we should also update our local instance data. inst.setTags(inst_tags); } msg = "No existing instance found - created: " + inst; logger.println(msg); LOGGER.info(msg); return newOndemandSlave(inst); } msg = "Found existing stopped instance: " + existingInstance; logger.println(msg); LOGGER.info(msg); List<String> instances = new ArrayList<String>(); instances.add(existingInstance.getInstanceId()); StartInstancesRequest siRequest = new StartInstancesRequest(instances); StartInstancesResult siResult = ec2.startInstances(siRequest); msg = "Starting existing instance: " + existingInstance + " result:" + siResult; logger.println(msg); LOGGER.fine(msg); for (EC2AbstractSlave ec2Node : NodeIterator.nodes(EC2AbstractSlave.class)) { if (ec2Node.getInstanceId().equals(existingInstance.getInstanceId())) { msg = "Found existing corresponding Jenkins slave: " + ec2Node; logger.println(msg); LOGGER.finer(msg); return ec2Node; } } // Existing slave not found msg = "Creating new Jenkins slave for existing instance: " + existingInstance; logger.println(msg); LOGGER.info(msg); return newOndemandSlave(existingInstance); } catch (FormException e) { throw new AssertionError(); // we should have discovered all configuration issues upfront } catch (InterruptedException e) { throw new RuntimeException(e); } }
From source file:integratedtoolkit.connectors.amazon.EC2.java
License:Apache License
private RunInstancesResult createMachine(String instanceCode, String diskImage) throws InterruptedException { //Create/*from ww w . ja v a 2 s .co m*/ RunInstancesRequest runInstancesRequest = new RunInstancesRequest(diskImage, 1, 1); Placement placement = new Placement(placementCode); runInstancesRequest.setPlacement(placement); runInstancesRequest.setInstanceType(instanceCode); runInstancesRequest.setKeyName(keyPairName); ArrayList<String> groupId = new ArrayList<String>(); groupId.add(securityGroupName); runInstancesRequest.setSecurityGroups(groupId); return client.runInstances(runInstancesRequest); }