On 29 August 2014 00:10, Andrew Phillips <[email protected]> wrote:
>> However that overrideLoginCredentialWith() method doesn't exist on the
>> EC2TemplateOptions.
>
>
> Which version of jclouds are you using, David? According to the Javadocs
> [1], EC2TemplateOptions should have a number of "overrideLogin*" methods.
>
> But you're right, there seems to be a typo there: I suspect the intended
> method is either "overrideLoginCredentials" or "overrideLoginPrivateKey".
>
> Hope that helps!
Thanks Andrew,
After some more experimenting I found out how it works. The
EC2TemplateOptions.keyPair() method takes the name of the key under
which you registered it with AWS. So it could be something as simple
as "davids_key" or something. I mistakenly thought that you had to
pass the actual public key content through that method.
To create instances that I can then later log into using my key, I'm
currently doing the following:
AdminAccess bootInstructions =
AdminAccess.builder().adminUsername("ec2-user").
adminPublicKey(myPublicKeyContent).build();
EC2TemplateOptions opts = EC2TemplateOptions.Builder
.overrideLoginCredentials(
LoginCredentials.builder().user("ec2-user").privateKey(myPrivateKeyContent).build())
.keyPair("davids_key") // the name I gave my key when I uploaded it to AWS
.inboundPorts(inboundPorts)
.runScript(bootInstructions);
TemplateBuilder templateBuilder = compute.templateBuilder();
templateBuilder
.hardwareId(instanceType)
.imageId(imageID)
.options(opts);
compute.createNodesInGroup("myGroupName", 1, templateBuilder.build());
This is working fine for me. I can also log into the instances created using
ssh -i <myprivatekey> [email protected]
If someone spots anything wrong with it, let me know :)
Cheers,
David
BTW I'm currently using JCouds 1.7.3