Permissions 在具有共享NFS装载的服务器上运行playbook

Permissions 在具有共享NFS装载的服务器上运行playbook,permissions,ansible,ansible-playbook,nfs,Permissions,Ansible,Ansible Playbook,Nfs,我有以下Ansible playbook可以跨集群进行包更新: - hosts: cluster become: true become_user: root tasks: - name: updates a server apt: update_cache=yes - name: upgrade a server apt: upgrade=full 当我运行它时,作为NFS控制器的节点执行得很好,但是在主目录上有NFS装载的两个节点失败,并出现以下

我有以下Ansible playbook可以跨集群进行包更新:

- hosts: cluster
  become: true
  become_user: root
  tasks:
   - name: updates a server
     apt: update_cache=yes
   - name: upgrade a server
     apt: upgrade=full
当我运行它时,作为NFS控制器的节点执行得很好,但是在主目录上有NFS装载的两个节点失败,并出现以下错误:

$ansible-playbook upgrade-servers.yml  -K
SUDO password:

PLAY ***************************************************************************

TASK [setup] *******************************************************************
fatal: [nej-worker2]: FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "\r\n/usr/bin/python: can't open file '/home/gms/.ansible/tmp/ansible-tmp-1461269057.4-144211747884693/setup': [Errno 13] Permission denied\r\n", "msg": "MODULE FAILURE", "parsed": false}
ok: [iznej]
fatal: [nej-worker1]: FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "\r\n/usr/bin/python: can't open file '/home/gms/.ansible/tmp/ansible-tmp-1461269057.4-16590584976890/setup': [Errno 13] Permission denied\r\n", "msg": "MODULE FAILURE", "parsed": false}

TASK [updates a server] ********************************************************
ok: [iznej]

TASK [upgrade a server] ********************************************************
changed: [iznej]

NO MORE HOSTS LEFT *************************************************************

PLAY RECAP *********************************************************************
iznej                      : ok=3    changed=1    unreachable=0    failed=0
nej-worker1                : ok=0    changed=0    unreachable=0    failed=1
nej-worker2                : ok=0    changed=0    unreachable=0    failed=1

我在共享上运行
pip
时遇到了类似的问题,修复方法是使用
--set build
重定向构建目录。。。我假设这是Ansible的问题,因为它是在NFS控制器上工作的,而不是在带有共享/装载驱动器的服务器上工作的

明白了。需要将remote_tmp=/tmp/.ansible添加到我的ansible.cfg文件中。看这里,瞧


问题是,当Ansible执行sudo时,根帐户不是NFS装载共享上的用户帐户

引用RHEL 6安全指南:

默认情况下,NFS共享将根用户更改为nfsnobody用户,即 非特权用户帐户。这将更改创建的所有根用户的所有者 文件到nfsnobody,这将阻止使用 setuid位已设置。如果未使用\u root\u squash[选项],则远程root用户 可以更改共享文件系统上的任何文件并离开 被特洛伊木马程序感染的应用程序,让其他用户无意中 执行。”

换句话说,这是一种默认的安全NFS行为