ansible - 在 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
解决方案
如果我不使用异步功能(我可以使用任何值进行轮询)
- 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": []}
推荐阅读
- r - 需要帮助重新订购月份
- elasticsearch - Elasticsearch如何在重新索引时删除字段
- calculator - Yacc 计算器括号和指数问题
- python - 在类的各种底层实现之间进行选择
- python - 在 Python 上运行多个 If-Loop 用于音乐制作?
- reactjs - 使用 React.lazy 动态选择组件
- amazon-web-services - Lambda 无权访问 ECR 映像
- r - 使用 apriori() 从规则对象中提取 transactionID
- mongodb - 不能将primitive.ObjectId用作具有表单绑定的类型 In Gin
- python - 如何让 Django 看到 Vue.js 编译生成的 dist/static 下的文件?