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