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 22:14:18 GMT
Found the solution. If I execute commands in a single line using &&, 
written as a java string they work as expected.
But reading them from a file where I write them line by line it cause 
the problems mentioned previously:

Files.toString(file, Charsets.UTF_8)

If I write them in a single line in the file it works as expected too. I 
tried to print the commands when they are line by line
and everything seems normal in console. Maybe it's the line breaks in 
combination with tcsh or something in that regard causing the problem.

Plus another find: you can't actually su root && command, the proper way 
is su - root -c "commands && here". su root seems to break the flow.


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