首页 > 解决方案 > 在 ansible 任务中使用 async 会引发特权错误

问题描述

我很困惑以下问题。

我尝试使用异步功能启动一个进程(这里只是一个愚蠢的 java 版本) 。

我使用我的用户运行 ansible-playbook,该用户在 docker 主机中有一个远程帐户作为 sudoer。我想启动命令的另一个帐户是toto

所以我写了这个

- name: test escalation
  shell: id ; echo "shell says toto"
  become: true
  become_user: "toto"
  tags:
    - escalation
  vars:
    ansible_ssh_pipelining: true

- name: java escalation
  shell:
    cmd: "/data/tools/java/jdk8u232-b09/bin/java -version &"
  async: 10
  # Don't wait
  poll: 0
  become: true
  become_user: "toto"
  tags:
    - escalation
  vars:
    ansible_ssh_pipelining: true

如果我运行这个,我有

任务 [java 升级] ************************************************ ****************************************************** *************致命:[主要]:失败!=> {"msg": "无法设置 Ansible 成为非特权用户时需要创建的临时文件的权限 (rc: 1, err: chown: 更改 '/var/tmp/ansible-tmp-1587484730.23-27264 的所有权-164045960304097/':不允许操作\nchown:更改'/var/tmp/ansible-tmp-1587484730.23-27264-164045960304097/AnsiballZ_command.py'的所有权:不允许操作\nchown:更改'/var/tmp/的所有权ansible-tmp-1587484730.23-27264-164045960304097/async_wrapper.py':不允许操作\n})。有关解决此问题的信息,请参阅https://docs.ansible.com/ansible/become。

有没有人有同样的问题?

ansible --version ansible 2.9.7

标签: ansible

解决方案


如果我不使用异步功能(我可以使用任何值进行轮询)

- name: java escalation
  shell:
    cmd: "/data/tools/java/jdk8u232-b09/bin/java -version &"
  # async: 10
  # Don't wait
  poll: 0
  become: true
  become_user: "toto"
  tags:
    - escalation
  vars:
    ansible_ssh_pipelining: true

它工作正常

任务[java升级] ************************************************ ****************************************************** ************* 更改:[main] => {"更改":true,"cmd":"/data/tools/java/jdk8u232-b09/bin/java -version &" ,“增量”:“0:00:00.034427”,“结束”:“2020-04-21 15:59:46.402081”,“rc”:0,“开始”:“2020-04-21 15:59: 46.367654", "stderr": "openjdk version \"1.8.0_232\"\nOpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_232-b09)\nOpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.232-b09, 混合模式)", "stderr_lines": ["openjdk 版本\"1.8.0_232\"", "OpenJDK 运行时环境 (AdoptOpenJDK)(build 1.8.0_232-b09)", "OpenJDK 64 位服务器 VM (AdoptOpenJDK)(build 25.232-b09, 混合模式)"], "stdout": "", "stdout_lines": []}


推荐阅读