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.