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
>> >>
>> >>
>> -------------------------------------------------------------------------------------------------------------------
>>

Reply via email to