The other user's home directory didn't have execute privileges. 

Thanks for your help and patience!

On Thursday, August 15, 2019 at 2:08:21 PM UTC-4, Larry Kyrala wrote:
>
> Thanks Kai, I tried and narrowed down the following:
>
> # strace on isdir
>
>
> $ diff nfs_{bad,good}.log
> 1,2c1,2
> < user2 ~> sudo -H strace -f python -c 'import os; print 
> os.path.isdir("nfsdir")'
> < execve("/usr/bin/python", ["python", "-c", "import os; print 
> os.path.isdir(\""...], [/* 17 vars */]) = 0
> ---
> > user1 ~$ sudo -H strace -f python -c 'import os; print 
> os.path.isdir("nfsdir")'
> > execve("/usr/bin/python", ["python", "-c", "import os; print 
> os.path.isdir(\""...], [/* 14 vars */]) = 0
> 762,765c762,765
> < stat("nfsdir", 0xADDRESS)         = -1 EACCES (Permission denied)
> < fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
> < write(1, "False\n", 6False
> < )                  = 6
> ---
> > stat("nfsdir", {st_mode=S_IFDIR|0755, st_size=4, ...}) = 0
> > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 7), ...}) = 0
> > write(1, "True\n", 5True
> > )                   = 5
>
>
> So isdir is failing on the bad system, specifically a stat call is failing.
>
> And running stat directly confirms this:
>
> # stats on dirs
>
>
> $ diff {bad,good}_stat.log
> 1,2c1,9
> < user2 ~> sudo stat nfsdir
> < stat: cannot stat '/home/user2/nfsdir': Permission denied
> ---
> > user1 ~$ sudo stat nfsdir
> >   File: nfsdir
> >   Size: 4           Blocks: 3          IO Block: 8192   directory
> > Device: 36h/54d Inode: 384033      Links: 2
> > Access: (0755/drwxr-xr-x)  Uid: ( 5954/ user1)   Gid: (  101/   users)
> > Access: 2019-06-06 14:14:23.025878969 -0400
> > Modify: 2019-08-14 15:37:43.576408706 -0400
> > Change: 2019-08-14 15:37:43.576408706 -0400
> >  Birth: -
>
>
> So the "bad" machine is setup to not allow sudo to be able to see the nfs 
> mount for the network user "user2".
>
>
>
>
> On Wednesday, August 14, 2019 at 4:16:53 PM UTC-4, Kai Stian Olstad wrote:
>>
>> On 14.08.2019 21:12, Larry Kyrala wrote: 
>> >     "matched": 0, 
>> >     "msg": "deployments/ was skipped as it does not seem to be a valid 
>> > directory or it cannot be accessed\n" 
>> > } 
>> > 
>> > 
>> > 
>> > 
>> > # script that is failing - deploy/main.yml: 
>> > 
>> > 
>> > - name: find deployments 
>> >   find: 
>> >     paths: deployments/ 
>> >     patterns: "*.json" 
>> >     excludes: "sample_deployment.json" 
>> >   register: files_matched 
>> > 
>> > 
>> > 
>> > 
>> > # directory permissions from within the VM: 
>>
>> It can be a few possibilities, since you are using relative path it 
>> might not search in correct paths. 
>> The easiest way to see what happens might be strace on the failing 
>> machine 
>>
>>    strace -f ansible-playbook deploy.yml --ask-become-pass 2>&1 | grep 
>> deployments 
>>
>> This will show every system call against deployments 
>>
>>
>> The find module stops after it test deployments/ is a directory with 
>> os.path.isdir, you can test it with this code and is should print True, 
>> since you are using become you should run this with sudo. 
>>
>>    sudo -H python -c 'import os; print os.path.isdir("deployments/")' 
>>
>>
>> -- 
>> Kai Stian Olstad 
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/39040748-fb12-4d05-b064-58828c5f80ae%40googlegroups.com.

Reply via email to