[ 
https://issues.apache.org/jira/browse/BROOKLYN-550?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16244467#comment-16244467
 ] 

Aled Sage commented on BROOKLYN-550:
------------------------------------

TL;DR: problem is that we're using 'root' user on the target VM, presumably 
because Brooklyn is installed as 'ec2-user' (so does not default to 
{{user=ec2-user}} for provisioning).

The workaround is to use something like {{user: myname}} in the location's 
configuration, or to install Brooklyn as a different user than {{ec2-user}}.

---
Investigated a number of possible causes:

*By running as {{ec2-user}}, it does not create a user on the machine. Instead 
it uses {{root}}.*

Perhaps these commands don't work well when run as root!
 
Confirmed that it worked when using {{user: aled}} in the location 
configuration.


*We had no ssh key configured, so it was auto-generating a password.*

Perhaps that caused problems, especially when combined with use of the root 
user?

However, when I generated {{~/.ssh/id_rsa(.pub)}}, it failed to execute the 
{{ssh: patch /etc/sudoers to disable requiretty}} step with the error shown 
below:
{noformat}
Error invoking start at PostgreSqlNodeImpl{id=bmqgsfda5d}: Passwordless sudo is 
required for r...@ec2-54-229-239-73.eu-west-1.compute.amazonaws.com 
(PostgreSqlNodeImpl{id=bmqgsfda5d})
{noformat}

I'd have though it really shouldn't have been trying to do {{sudo ...}} when 
running as root.

I think that at least some of our commands/blueprints don't work well when run 
as {{root}}, but then people shouldn't be running as root!


*Maybe there's something strange with that AMI.*

It defaulted to {{RightImage_CentOS_7.0_x64_v14.2.1_HVM_EBS}}, which is 
different from the one I usually test with (i.e. the centos.org marketplace 
AMI). 

Re-testing with the centos.org marketplace VM (and with an ssh-key present), it 
worked.

> Entity's install hangs in EC2 using 'ec2-user', for task 'patch /etc/sudoers 
> to disable requiretty'
> ---------------------------------------------------------------------------------------------------
>
>                 Key: BROOKLYN-550
>                 URL: https://issues.apache.org/jira/browse/BROOKLYN-550
>             Project: Brooklyn
>          Issue Type: Bug
>            Reporter: Aled Sage
>
> We ran brooklyn 1.0.0-SNAPSHOT in AWS, installed using the karaf tgz as the 
> {{ec2-user}}.
> We attempted to deploy a Postgres node to the location {{aws-ec2:eu-west-1}}, 
> with no config beyond the credentials.
> However, it consistently hung at the install step, for the task {{ssh: patch 
> /etc/sudoers to disable requiretty}}. The stdout showed:
> {noformat}
> /tmp/brooklyn-20171108-153638983-Rgvh-patch_etc_sudoers_to_disable_r.sh < 
> /dev/null
> RESULT=$?
> rm -f /tmp/brooklyn-20171108-153638983-Rgvh-patch_etc_sudoers_to_disable_r.sh 
> < /dev/null
> exit $RESULT
> Last login: Wed Nov  8 15:36:28 2017 from 172.31.30.73
>      ___   _        __   __   ____            __
>     / _ \ (_)___ _ / /  / /_ / __/____ ___ _ / /___
>    / , _// // _ `// _ \/ __/_\ \ / __// _ `// // -_)
>   /_/|_|/_/ \_, //_//_/\__//___/ \__/ \_,_//_/ \__/
>            /___/
> Welcome to a virtual machine image brought to you by RightScale!
> {noformat}
> The thread details showed:
> {noformat}
> Task[ssh: patch /etc/sudoers to disable requiretty]@DtjFO3hN
> Submitted by MaybeSupplier[value=Task[install (main)]@D35ceCTu]
> In progress, thread waiting (timed) on 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@33cde89c
> At: net.schmizz.concurrent.Promise.tryRetrieve(Promise.java:170)
>     net.schmizz.concurrent.Promise.retrieve(Promise.java:137)
>     net.schmizz.concurrent.Event.await(Event.java:103)
>     
> net.schmizz.sshj.connection.channel.AbstractChannel.join(AbstractChannel.java:259)
>     
> org.apache.brooklyn.util.core.internal.ssh.sshj.SshjTool$ShellAction.create(SshjTool.java:1003)
>     
> org.apache.brooklyn.util.core.internal.ssh.sshj.SshjTool$ShellAction.create(SshjTool.java:920)
>     
> org.apache.brooklyn.util.core.internal.ssh.sshj.SshjTool.acquire(SshjTool.java:621)
>     
> org.apache.brooklyn.util.core.internal.ssh.sshj.SshjTool.acquire(SshjTool.java:607)
>     
> org.apache.brooklyn.util.core.internal.ssh.sshj.SshjTool$1.run(SshjTool.java:321)
>     
> org.apache.brooklyn.util.core.internal.ssh.sshj.SshjTool.execScript(SshjTool.java:323)
>     
> org.apache.brooklyn.util.core.task.system.internal.ExecWithLoggingHelpers$1.exec(ExecWithLoggingHelpers.java:78)
>     
> org.apache.brooklyn.util.core.task.system.internal.ExecWithLoggingHelpers$3.apply(ExecWithLoggingHelpers.java:157)
>     
> org.apache.brooklyn.util.core.task.system.internal.ExecWithLoggingHelpers$3.apply(ExecWithLoggingHelpers.java:154)
>     org.apache.brooklyn.util.pool.BasicPool.exec(BasicPool.java:146)
>     
> org.apache.brooklyn.location.ssh.SshMachineLocation.execSsh(SshMachineLocation.java:599)
>     
> org.apache.brooklyn.location.ssh.SshMachineLocation$13.execWithTool(SshMachineLocation.java:779)
>     
> org.apache.brooklyn.util.core.task.system.internal.ExecWithLoggingHelpers.execWithLogging(ExecWithLoggingHelpers.java:154)
>     
> org.apache.brooklyn.util.core.task.system.internal.ExecWithLoggingHelpers.execScript(ExecWithLoggingHelpers.java:76)
>     
> org.apache.brooklyn.location.ssh.SshMachineLocation.execScript(SshMachineLocation.java:762)
>     
> org.apache.brooklyn.util.core.task.ssh.internal.AbstractSshExecTaskFactory$1.run(AbstractSshExecTaskFactory.java:53)
>     
> org.apache.brooklyn.util.core.task.system.ProcessTaskWrapper$ProcessTaskInternalJob.call(ProcessTaskWrapper.java:99)
>     
> org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:565)
> {noformat}
> It created the VM shown below:
> {noformat}
> 2017-11-08T15:36:13,045 INFO  129 o.a.b.l.j.JcloudsLocation 
> [ger-SeuKvIO8-135] Finished VM 
> aws-ec2:eu-west-1@PostgreSqlNodeImpl{id=mhgtb5uejt} creation: 
> r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com/54.154.17.185:22 ready 
> after 1m 12s (semaphore obtained in 0ms;{image={id=eu-west-1/ami-69841c1e, 
> providerId=ami-69841c1e, name=RightImage_CentOS_7.0_x64_v14.2.1_HVM_EBS, 
> location={scope=REGION, id=eu-west-1, description=eu-west-1, parent=aws-ec2, 
> iso3166Codes=[IE]}, os={family=centos, arch=hvm, version=7.0, 
> description=411009282317/RightImage_CentOS_7.0_x64_v14.2.1_HVM_EBS, 
> is64Bit=true}, description=RightImage_CentOS_7.0_x64_v14.2.1_HVM_EBS, 
> version=14.2.1_HVM_EBS, status=AVAILABLE[available], loginUser=root, 
> userMetadata={owner=411009282317, rootDeviceType=ebs, virtualizationType=hvm, 
> hypervisor=xen}}, hardware={id=m3.medium, providerId=m3.medium, 
> processors=[{cores=1.0, speed=3.0}], ram=3840, volumes=[{type=LOCAL, 
> size=10.0, device=/dev/sda1, bootDevice=true, durable=false}, {type=LOCAL, 
> size=4.0, device=/dev/sdb, bootDevice=false, durable=false}], 
> supportsImage=Predicates.and(Predicates.alwaysTrue(),Predicates.or(requiresVirtualizationType(hvm),requiresVirtualizationType(paravirtual)),Predicates.alwaysTrue(),Predicates.alwaysTrue())},
>  location={scope=REGION, id=eu-west-1, description=eu-west-1, parent=aws-ec2, 
> iso3166Codes=[IE]}, options={inboundPorts=[22, 5432], scriptPresent=true, 
> userMetadata={Name=brooklyn-oz3vac-root-test-dux2-postgresql-mhgt-xm6u, 
> brooklyn-user=root, brooklyn-app-id=dux269oglh, brooklyn-app-name=test, 
> brooklyn-entity-id=mhgtb5uejt, brooklyn-entity-name=PostgreSQL Node, 
> brooklyn-server-creation-date=2017-11-08-1535}, userDataCksum=2f4a740b}} 
> template built in 10.01s; {id=eu-west-1/i-0ccd9561d6c6ffa82, 
> providerId=i-0ccd9561d6c6ffa82, 
> name=brooklyn-oz3vac-root-test-dux2-postgresql-mhgt-xm6u, 
> location={scope=ZONE, id=eu-west-1b, description=eu-west-1b, 
> parent=eu-west-1, iso3166Codes=[IE]}, 
> group=brooklyn-oz3vac-root-test-dux2-postgresql-mhgt, 
> imageId=eu-west-1/ami-69841c1e, os={family=centos, arch=hvm, version=7.0, 
> description=411009282317/RightImage_CentOS_7.0_x64_v14.2.1_HVM_EBS, 
> is64Bit=true}, status=RUNNING[running], loginPort=22, 
> hostname=ip-172-31-12-89, privateAddresses=[172.31.12.89], 
> publicAddresses=[54.154.17.185], hardware={id=m3.medium, 
> providerId=m3.medium, processors=[{cores=1.0, speed=3.0}], ram=3840, 
> volumes=[{type=LOCAL, size=4.0, device=/dev/sdb, bootDevice=false, 
> durable=false}, {id=vol-0125a377075cbb705, type=SAN, device=/dev/sda1, 
> bootDevice=true, durable=true}], hypervisor=xen, 
> supportsImage=Predicates.and(Predicates.alwaysTrue(),Predicates.or(requiresVirtualizationType(hvm),requiresVirtualizationType(paravirtual)),Predicates.alwaysTrue(),Predicates.alwaysTrue())},
>  userMetadata={Name=brooklyn-oz3vac-root-test-dux2-postgresql-mhgt-xm6u, 
> brooklyn-user=root, brooklyn-app-id=dux269oglh, brooklyn-app-name=test, 
> brooklyn-entity-id=mhgtb5uejt, brooklyn-entity-name=PostgreSQL Node, 
> brooklyn-server-creation-date=2017-11-08-1535}} provisioned in 54.1s; 
> SshMachineLocation[54.154.17.185:r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com/54.154.17.185:22(id=gco0d355zk)]
>  connection usable in 1.40s; and os customized in 7.50s - point /dev/random 
> to urandom, open iptables)
> {noformat}
> Here's the snippet from the logs:
> {noformat}
> 2017-11-08T15:36:13,482 DEBUG 123 b.SSH [ger-SeuKvIO8-172] patch /etc/sudoers 
> to disable requiretty, initiating ssh on machine 
> SshMachineLocation[54.154.17.185:r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com/54.154.17.185:22
> (id=gco0d355zk)]: #!/bin/bash -e
>  ; { { test ! -e /etc/sudoers && true ; } || ( ( if test "$UID" -eq 0; then ( 
> grep brooklyn-removed-require-tty /etc/sudoers ); else sudo -E -n -S -- grep 
> brooklyn-removed-require-tty /etc/sudoers; fi ) || { ( if test "$UID" -eq 0;
>  then ( cp /etc/sudoers /etc/sudoers.bohb23 ); else sudo -E -n -S -- cp 
> /etc/sudoers /etc/sudoers.bohb23; fi ) && ( if test "$UID" -eq 0; then ( sed 
> -i.brooklyn.bak 's/.*requiretty.*/#brooklyn-removed-require-tty/' 
> /etc/sudoers.boh
> b23 ); else sudo -E -n -S -- sed -i.brooklyn.bak 
> 's/.*requiretty.*/#brooklyn-removed-require-tty/' /etc/sudoers.bohb23; fi ) 
> && ( if test "$UID" -eq 0; then ( visudo -c -f /etc/sudoers.bohb23 ); else 
> sudo -E -n -S -- visudo -c -f /
> etc/sudoers.bohb23; fi ) && ( if test "$UID" -eq 0; then ( mv 
> /etc/sudoers.bohb23 /etc/sudoers ); else sudo -E -n -S -- mv 
> /etc/sudoers.bohb23 /etc/sudoers; fi ) ; } ) ; } ; ( if test "$UID" -eq 0; 
> then ( echo "sudo"-is-working-aTd
> La5 ); else sudo -E -n -S -- echo "sudo"-is-working-aTdLa5; fi )
> 2017-11-08T15:36:13,487 DEBUG 123 o.a.b.l.s.SshMachineLocation 
> [ger-SeuKvIO8-172] 
> org.apache.brooklyn.location.ssh.SshMachineLocation$4@2cd38cc4 building ssh 
> pool for ec2-54-154-17-185.eu-west-1.compute.amazonaws.com:22 with proper
> ties: {port=22, allocatePTY=true}
> 2017-11-08T15:36:13,669 DEBUG 146 o.a.b.u.p.BasicPool [ger-SeuKvIO8-172] 
> BasicPool{name=Pool(54.154.17....@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com/54.154.17.185:22:hash2126695026)}
>  acquired and returning new entry root@ec
> 2-54-154-17-185.eu-west-1.compute.amazonaws.com:22 (currentLeased=1; 
> totalLeased=1; totalCreated=1; totalClosed=0)
> 2017-11-08T15:36:13,834 DEBUG 123 
> o.a.b.c.m.p.BrooklynMementoPersisterToObjectStore [ger-SeuKvIO8-171] 
> Checkpointed delta of memento in 7ms: updated 1 entities, 2 locations, 0 
> policies, 4 enrichers, 0 catalog items, 0 bundles; remo
> ved 0 entities, 0 locations, 0 policies, 0 enrichers, 0 catalog items, 0 
> bundles
> 2017-11-08T15:36:13,860 DEBUG 123 b.SSH [Thread-352] 
> [r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com:22:stdout] 
> /tmp/brooklyn-20171108-153613669-HpLV-patch_etc_sudoers_to_disable_r.sh < 
> /dev/null
> 2017-11-08T15:36:13,861 DEBUG 123 b.SSH [Thread-352] 
> [r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com:22:stdout] RESULT=$?
> 2017-11-08T15:36:13,861 DEBUG 123 b.SSH [Thread-352] 
> [r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com:22:stdout] rm -f 
> /tmp/brooklyn-20171108-153613669-HpLV-patch_etc_sudoers_to_disable_r.sh < 
> /dev/null
> 2017-11-08T15:36:13,861 DEBUG 123 b.SSH [Thread-352] 
> [r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com:22:stdout] exit 
> $RESULT
> 2017-11-08T15:36:13,861 DEBUG 123 b.SSH [Thread-352] 
> [r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com:22:stdout] Last 
> login: Wed Nov  8 15:36:03 2017 from 172.31.30.73
> 2017-11-08T15:36:13,862 DEBUG 123 b.SSH [Thread-352] 
> [r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com:22:stdout]      ___   
> _        __   __   ____            __
> 2017-11-08T15:36:13,862 DEBUG 123 b.SSH [Thread-352] 
> [r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com:22:stdout]     / _ \ 
> (_)___ _ / /  / /_ / __/____ ___ _ / /___
> 2017-11-08T15:36:13,862 DEBUG 123 b.SSH [Thread-352] 
> [r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com:22:stdout]    / , _// 
> // _ `// _ \/ __/_\ \ / __// _ `// // -_)
> 2017-11-08T15:36:13,863 DEBUG 123 b.SSH [Thread-352] 
> [r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com:22:stdout]   
> /_/|_|/_/ \_, //_//_/\__//___/ \__/ \_,_//_/ \__/
> 2017-11-08T15:36:13,863 DEBUG 123 b.SSH [Thread-352] 
> [r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com:22:stdout]            
> /___/
> 2017-11-08T15:36:13,863 DEBUG 123 b.SSH [Thread-352] 
> [r...@ec2-54-154-17-185.eu-west-1.compute.amazonaws.com:22:stdout] Welcome to 
> a virtual machine image brought to you by RightScale!
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to