jclouds-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cen <imba...@gmail.com>
Subject Re: Problem bootstraping FreeBSD on EC2
Date Thu, 28 Jan 2016 15:18:27 GMT
Even using full path for the command it still doesn't work. It's like 
I'm in SSH limbo with access completely restricted.
I'll play around with it a bit more but I think I will ultimately create 
my own AMI with sudo and bash preinstalled.

Ignasi Barrera je 28. 01. 2016 ob 11:12 napisal:
> I have no experience with BSD instances, but could it be a PATH issue?
> Can you try setting the PATH manually?
>
> On 28 January 2016 at 09:13, Klemen Ferjančič <imbacen@gmail.com> wrote:
>> It seems I've hit a wall.
>>
>> 1. For some reason, even when disabling init script on template builder,
>> it still tries to run it. So I decided to skip it for now.
>>
>> .wrapInInitScript(false).runScript(getBootInstructions(os)).runAsRoot(true);
>>
>> 2. Running as root and disabling sudo does not actually remove sudo.
>> Taking a closer look at RunScriptOnNodeUsingSsh.java->execAsRoot, it
>> seems that sudo is always run in front.
>>
>> opts.wrapInInitScript(false).runAsRoot(true).overrideAuthenticateSudo(false)
>> .overrideLoginCredentials(getLoginForCommandExecution(os));
>>
>> Result:
>> `sudo sh <<'RUN_SCRIPT_AS_ROOT_SSH' ...
>>
>> which means I can't run as root.
>>
>> 3. So I decided to run as regular user (not root and not sudo) and just
>> switch to root manually. Works if I do it by hand:
>> su root
>> pkg install -y sudo
>> pkg install -y bash
>>
>> Opts:
>> .wrapInInitScript(false).runAsRoot(false)
>> .overrideLoginCredentials(getLoginForCommandExecution(os))
>>
>> But for some reason, it seems that jclouds puts me in some weird
>> restricted shell where I can't execute anything.
>> su returns "Sorry" and trying to run a simple command like "whoami"
>> results in: not found. It's clear to me that this is not the same
>> environment as the one
>> when I manually ssh into the machine so what is the difference?
>>
>>
>> Best regards, Klemen
>>
>> On 27. 01. 2016 11:06, Ignasi Barrera wrote:
>>> No. You can use the one in the template builder to run the first one and
>>> the run the rest by calling computeService.runScriptOnNode afterhaving
>>> created the node.
>>>
>>> El 27/1/2016 11:03 a. m., "Klemen Ferjančič" <imbacen@gmail.com
>>> <mailto:imbacen@gmail.com>> escribió:
>>>
>>>      If I add additional scripts on top of template builder are they going to
>>>      be executed in order or is the solution more complex than this?
>>>
>>>      Something like:
>>>
>>>      templateBuilder.wrapInInitScript(false).runScript(installBashAndSudo())
>>>      .wrapInitScript(true).runScript(everythingElse())
>>>
>>>      On 27. 01. 2016 10:56, Ignasi Barrera wrote:
>>>      > Yes, the RunScriptOptions provide options to run the scripts as root,
>>>      > and also to explicitly disable sudo.
>>>      >
>>>      > Currently the wrapper script requires bash, so you'll have to install
>>>      > it first if you need to use it. You could split the runscript in two
>>>      > operations: a first one with the wrapInitScript(false) to just install
>>>      > bash, and a second one to run the desired script.
>>>      >
>>>      > That wrapper script, as said, contains several helpers to let jclouds
>>>      > query the status of the script execution: see if it is still running,
>>>      > allow to abort it, etc. If you are running scripts that take time,
I'd
>>>      > recommend you run them with the wrapper script.
>>>      >
>>>      > I.
>>>      >
>>>      > On 27 January 2016 at 10:48, Klemen Ferjančič <imbacen@gmail.com
>>>      <mailto:imbacen@gmail.com>> wrote:
>>>      >> Good advice, I suspect I know what is going on.
>>>      >>
>>>      >> Home directory contains bootstrap and /tmp/init-bootstrap exists.
>>>      >> However, if I run ./init-bootstrap it says "not found". I checked
the
>>>      >> init script and it seems that bash is expected to exist on the
system
>>>      >> (#!/bin/bash), however, bash does not come preinstalled on FreeBSD.
I
>>>      >> could install bash with runScript but I don't think personal
>>>      script is
>>>      >> executed before the init one? Another interesting note: sudo is
not
>>>      >> preinstalled either so I probably need to run my script as root.
I'll
>>>      >> play around with this and see what I can do.
>>>      >>
>>>      >> Code snippet:
>>>      >>
>>>      >> templateBuilder.osFamily(OsFamily.FREEBSD);
>>>      >> templateBuilder.imageId(REGION + "/ami-9f5549f3");
>>>      >> EC2TemplateOptions o =
>>>      EC2TemplateOptions.Builder.keyPair("mykeypair")
>>>      >>
>>>      .overrideLoginCredentials(getLoginForCommandExecution(os)).runScript(getBootInstructions(os));
>>>      >> templateBuilder.locationId(REGION);
>>>      >> templateBuilder.hardwareId(INSTANCE);
>>>      >> templateBuilder.options(o);
>>>      >>
>>>      >>
>>>      >> On 27. 01. 2016 10:23, Ignasi Barrera wrote:
>>>      >>> Hi Klemen,
>>>      >>>
>>>      >>> jclouds generates and uploads that script to the node. It is
a
>>>      wrapper
>>>      >>> script that provides some helpers to get the status of the
>>>      configured
>>>      >>> script, and to properly capture the output, stderr, and make
it
>>>      >>> possible to abort its execution.
>>>      >>>
>>>      >>> After the failure, can you log in to the instance and see which
>>>      files
>>>      >>> do you have in the user's home directory and in /tmp?
>>>      >>>
>>>      >>> You can also disable the wrapper script by configuring the
>>>      >>> "wrapInitScript(false)" in the RunScriptOptions, and see if
the
>>>      >>> problem persists.
>>>      >>>
>>>      >>> Could you also share a small code snippet of the code you're
>>>      using to
>>>      >>> bootstrap the node?
>>>      >>>
>>>      >>> I.
>>>      >>>
>>>      >>> On 27 January 2016 at 09:39, Klemen Ferjančič <imbacen@gmail.com
>>>      <mailto:imbacen@gmail.com>> wrote:
>>>      >>>> Hi
>>>      >>>>
>>>      >>>> When I create a new Ec2 instance with FreeBSD private AMI,
the
>>>      >>>> init-bootstrap fails to run. The instance is created and
runs
>>>      normally,
>>>      >>>> but the error also fails my own runScript so I'd like to
>>>      resolve it.
>>>      >>>>
>>>      >>>> 00:32:27,588 ERROR [jclouds.compute] (user thread 0) <<
problem
>>>      >>>> customizing node(eu-central-1/i-22cd4c9e): :
>>>      >>>> java.lang.IllegalStateException: error running [/tmp/init-bootstrap
>>>      >>>> init] as ec2-user@52.59.247.117
>>>      <mailto:ec2-user@52.59.247.117>; returnVal !=0:
>>>      >>>> {output=/tmp/init-bootstrap: not found
>>>      >>>> , error=, exitStatus=127)
>>>      >>>>
>>>      >>>> Full stacktrace: http://pastebin.com/xabqprs5
>>>      >>>>
>>>      >>>> 1. Is /tmp/init-bootstrap supposed to already exist on
the
>>>      image or is
>>>      >>>> this a script that jclouds uploads to the node? If the
latter,
>>>      I assume
>>>      >>>> there is a problem with script not being uploaded in the
first
>>>      place? No
>>>      >>>> error indicates this though.
>>>      >>>> 2. What does this script actually do? Is it possible to
disable it?
>>>      >>>>
>>>      >>>> Best regards, Klemen
>>>      >>>>
>>>      >>>>
>>>      >>
>>>


Mime
View raw message