The configuration seems correct. Can you try using version 2.0.0-SNAPSHOT and set the chef version I suggested, and see if it works? Just to isolate the issue and see if it is actually a package version.
On 9 February 2015 at 11:43, Subhadip Bagui <i.ba...@gmail.com> wrote: > 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 >> >> >> >> >> ------------------------------------------------------------------------------------------------------------------- >>