You might want to try something like templateBuilder.options(overrideLoginUser(loginUser))
before you call templateBuilder.build(); As per this example: https://github.com/jclouds/jclouds-examples/blob/master/compute-basics/src/main/java/org/jclouds/examples/compute/basics/MainApp.java In any case I am thinking the idea is that you should not be able to modify the template (or its options) after you call build(). Let me know if this helps or not. -Zack From: Vineet Saini [switchcod...@gmail.com] Sent: Wednesday, July 09, 2014 10:49 AM To: user@jclouds.apache.org Subject: Re: How to create Winodows Compute with random or predefine password Andrew, Based on information you provided and using existing example, I able to make some progress, but not able to resolved one thing, here is code snippet. Iterable<Module> modules = ImmutableSet. of( new SshjSshClientModule(), new SLF4JLoggingModule(), new EnterpriseConfigurationModule(), new BouncyCastleCryptoModule(); ComputeServiceContext context = ContextBuilder.newBuilder("aws-ec2") .credentials(identity, credential ) .modules(modules).buildView(ComputeServiceContext.class); // use image id for windows Server 2003 R2 base = ami-9050a9f8 TemplateBuilder templateBuilder = context.getComputeService().templateBuilder(); templateBuilder.imageId("us-east-1/ami-9050a9f8") .smallest() .locationId("us-east-1").os64Bit(true); // Get Template Template template = templateBuilder.build(); // Here try to override administrator password with static password, // This does not work template.getOptions().overrideLoginUser("Administrator"); template.getOptions().overrideLoginPassword("test123"); // setup port for rdp template.getOptions().inboundPorts(3389); // Create Node: it wait for call to finish with admin user it setup. that take care of wait till ready. Set<?extends NodeMetadata> nodes = computeService .createNodesInGroup("grouptest", 2, template); NodeMetadata nodeMetadata = Iterables.getOnlyElement(nodes); PasswordDataAndPrivateKey dataAndKey = new PasswordDataAndPrivateKey( context.unwrapApi(EC2Api.class).getWindowsApi().get().getPasswordDataInRegion(region, nodeMetadata.getId()), nodeMetadata.getCredentials().getPrivateKey()); WindowsLoginCredentialsFromEncryptedData f = context.utils().injector().getInstance(WindowsLoginCredentialsFromEncryptedData.class); // In this case it need parameter type to be EncryptedPasswordDataAndPrivateKey instead of PasswordDataAndPrivateKey, not sure how to resolve that. LoginCredentials credentials = f.apply(dataAndKey); // get decrypted pass logger.info("Login name: %s", credentials.getUser()); logger.info("Password: %s", credentials.getPassword()); Thanks for all the help. On Tue, Jul 8, 2014 at 3:53 PM, Andrew Phillips <andr...@apache.org> wrote: Also if can point me how to set default password for administrator user. that would be helpful too. I am not sure if that is possible. The EC2 Windows Security guide [1] says that, during initial install, it "generates and sets a random password on the Administrator account", but with your own AMIs you may be able to do something different. As regards retrieving the Administrator credentials: have you been able to try getting the WindowsApi [2] from the EC2Api [3] and using that? If you are working with a ComputeService view, you will need to "unwrap" the view to access the underlying API first [4]. Regards ap [1] https://aws.amazon.com/articles/1767 [2] http://javadocs.jclouds.cloudbees.net/org/jclouds/ec2/features/WindowsApi.html [3] http://javadocs.jclouds.cloudbees.net/org/jclouds/ec2/EC2Api.html#getWindowsApi() [4] http://jclouds.apache.org/start/concepts/#apis