It seems to be failing to install the Chef RPM (and that would be an issue with the Chef package itself). To debug what is going on, you can:
* Log in to the node after the script execution failure. * Remove the "/etc/chef" directory, to cleanup everything jclouds has created there. * In the user's home directory you'll find a symlink pointing to the bootstrap script. * That bootstrap script leaves the stdout and stderr outputs in "/tmp". You can read them and see if you find more details about the error. * Or you can manually run the script and see if you can see more details. jclouds by default installs Chef using the Omnibus installer and installs the latest version of Chef. You can also try to force a concrete version of the Chef Client to be installed. To do that: * You must use jclouds 2.0.0-SNAPSHOT version (there is not a release with the version support when using Omnibus). * Create the ChefContext adding the following property (this is a version of the Chef client I've tested recently): overrides.setProperty(ChefProperties.CHEF_VERSION, "11.16.4-1"); HTH! I. On 8 February 2015 at 19:07, Subhadip Bagui <i.ba...@gmail.com> wrote: > Hi, > > I'm trying to bootstrap one predefined recipe as runlist through JClouds > boot strap. The issue I'm facing is the authentication and chef-validator > pem file all the generating correctly in ec2 node, but it's failing to > create the client.pem in the new node. For that the recipe is not able to > run. Below is my code part following the example from link > https://github.com/jclouds/jclouds-examples/blob/master/chef-basics/src/main/java/org/apache/jclouds/examples/chef/basics/MainApp.java > > Please let me know the whats the issue here. > > > private String createBootstrapAWS(String userName, String password, >> InstanceBean instance, ComputeService computeService) >> throws IOException { >> String status = Constants.SUCCESS; >> List<String> runlist = new ArrayList<String>(); >> String recipe = INITIAL_UPDATE_VM; >> // initialising chef >> ChefContext chefContext = AriServiceConfiguration >> .chefServerConfigurationCloudWise(instance); >> Iterable<? extends CookbookVersion> cookbookVersions = chefContext >> .getChefService().listCookbookVersions(); >> if (any(cookbookVersions, containsRecipe(recipe))) { >> runlist = new RunListBuilder().addRecipe(recipe).build(); >> } >> if (instance.isAutoDeploy()) { >> runlist = new RunListBuilder().addRecipes( >> instance.getRecipes().toArray( >> new String[instance.getRecipes().size()])).build(); >> } >> LoginCredentials login = getLoginForCommandExecution(userName, >> password, instance.getCloudType()); >> LOG.info("got the login as :" + login); >> ChefService chefService = initChefServiceAWS( >> MessageTranslator.getMessage("chef.client"), >> MessageTranslator.getMessage("chef.validator")); >> BootstrapConfig build = null; >> try { >> build = BootstrapConfig.builder().runList(runlist).build(); >> chefService.updateBootstrapConfigForGroup(instance.getGroupName(), >> build); >> // Build the script that will bootstrap the node >> Statement bootstrap = chefService >> .createBootstrapScriptForGroup(instance.getGroupName()); >> LOG.info("bootstrap created..."); >> LOG.debug("Running run script"); >> status = runScriptOnGroup(computeService, login, instance, >> bootstrap); >> } catch (Exception e) { >> LOG.warn("error thrown for bootstrap.." + e.getMessage()); >> return "failure"; >> } finally { >> chefContext.close(); >> } >> return status; >> } > > > > The response I'm getting from JClouds for ExecResponse is below. It's not > creating the client.pem. Please let me know what is the issue here. > > ExecResponse execResponses1 = compute.runScriptOnNode( >> instance.getInstanceId(), command, >> overrideLoginCredentials(login).runAsRoot(true)); > > > {output=Downloading Chef for el... > downloading > https://www.opscode.com/chef/metadata?v=&prerelease=false&nightlies=false&p=el&pv=6&m=x86_64 > to file /tmp/install.sh.2830/metadata.txt > trying wget... > url > https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-12.0.3-1.x86_64.rpm > md5 3634d1a3b6ae2e5977361075da0f44cc > sha256 0ec6162b9d0ca2b2016ff02781d84905f712d64c7a81d01b0df88f977832f310 > downloaded metadata file looks valid... > downloading > https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-12.0.3-1.x86_64.rpm > to file /tmp/install.sh.2830/chef-12.0.3-1.x86_64.rpm > trying wget... > Comparing checksum with sha256sum... > Installing Chef > installing with rpm... > Preparing... > ################################################## > chef > ################################################## > Thank you for installing Chef! > [2015-02-08T17:41:25+00:00] INFO: Forking chef instance to converge... > [2015-02-08T17:41:25+00:00] INFO: *** Chef 12.0.3 *** > [2015-02-08T17:41:25+00:00] INFO: Chef-client pid: 7023 > [2015-02-08T17:41:28+00:00] INFO:* Client key /etc/chef/client.pem is not > present - registering* > *, error=warning: /tmp/install.sh.2830/chef-12.0.3-1.x86_64.rpm: Header V4 > DSA/SHA1 Signature, key ID 83ef826a: NOKEY* > *, exitStatus=1}* > > > Regards, > Subhadip > > -------------------------------------------------------------------------------------------------------------------