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

时间:2016-04-21 20:24:58

标签: permissions ansible ansible-playbook nfs

我有以下Ansible手册来跨群集进行包更新:

- 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控制器上工作,而不是具有共享/挂载驱动器的服务器。

2 个答案:

答案 0 :(得分:4)

知道了。需要将remote_tmp = /tmp/.ansible添加到我的ansible.cfg文件中。见Ansible config parameters瞧!

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

答案 1 :(得分:0)

引用RHEL 6安全指南:

  

“默认情况下,NFS共享将root用户更改为nfsnobody用户,即   无特权的用户帐户。这会更改所有root创建的所有者   文件到nfsnobody,阻止上传程序   setuid位设置。如果使用no_root_squash [option],则为远程root用户   能够更改共享文件系统上的任何文件并离开   应用程序感染特洛伊木马的其他用户无意中   执行“。

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