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č" <imba...@gmail.com
> <mailto:imba...@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č <imba...@gmail.com
>     <mailto:imba...@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č <imba...@gmail.com
>     <mailto:imba...@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
>     >>>>
>     >>>>
>     >>
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to