Hi Ignasi, Thanks for your reply.
I'm using jclouds version 1.7.3 and I'm not setting any chef version in code. Default it's taking that opscode-omnibus chef. I have cleaned the /var/chef dir and tried but getting the same issue. Here is my code for ChefService creation. Please let me know what needs to be done. `private ChefService initChefServiceAWS(String client, String validator) { ChefContext context = null; try { String organization = "chef"; String pemFile = MessageTranslator.getMessage("user.home") + "/.chef/" + client + ".pem"; String credential = Files.toString(new File(pemFile), Charsets.UTF_8); // Provide the validator information to let the nodes to // auto-register themselves // in the Chef server during bootstrap String validatorPemFile = MessageTranslator.getMessage("user.home") + "/.chef/" + validator + ".pem"; String validatorCredential = Files.toString(new File( validatorPemFile), Charsets.UTF_8); Properties chefConfig = new Properties(); chefConfig.put(ChefProperties.CHEF_VALIDATOR_NAME, validator); chefConfig.put(ChefProperties.CHEF_VALIDATOR_CREDENTIAL, validatorCredential); ContextBuilder builder = ContextBuilder .newBuilder(organization) .credentials(client, credential) .overrides(chefConfig); LOG.debug(" initializing Chef Service " + builder.getApiMetadata()); context = builder.buildView(ChefContext.class); } catch (Exception e) { LOG.warn("error reading private key ", e); return null; } return context.getChefService(); }` Regards, Subhadip ------------------------------------------------------------------------------------------------------------------- On Mon, Feb 9, 2015 at 1:53 PM, Ignasi Barrera <n...@apache.org> wrote: > Could you also share the code you use to create the ChefContext? Just > to make sure the credentials and validator certificates are properly > configured. Thanks! > > On 9 February 2015 at 09:18, Ignasi Barrera <ignasi.barr...@gmail.com> > wrote: > > 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 > >> > >> > ------------------------------------------------------------------------------------------------------------------- >