我可以手动执行以下操作 -
从我的ansible控制器服务器 ssh<> (使用我的用户ID) sudo / bin / su - <> .. 现在运行命令为orafmw ...
尝试使用ansible -
进行同样的步骤时我的剧本有以下条目
- role: fmw-software
become: true
become_user: 'orafmw'
become_method: sudo
become_flags: '/bin/su'
这失败如下 -
ansible-playbook weblogic-fmw-domain.yml
播放[使用WebLogic 12c R2域配置Oracle Linux 7.1] ******************
任务[设置] ******************************************* ************************ 好的:[weblogic]
任务[fmw-software:创建安装程序目录] ******************************* 致命:[weblogic]:失败了! => {“failed”:true,“msg”:“超时(12秒)等待权限提升提示:”} 重试,使用: - limit @ / tmp / ansible-weblogic -fmw-infra-12c-R2-master / weblogic -fmw-domain.retry
回放********************************************* ************************ weblogic:ok = 1 changed = 0 unreachable = 0 failed = 1
任何人都可以指出我在这里做错了吗? 文档建议 - http://docs.ansible.com/ansible/become.html
“每个主机只能启用一种方法 方法无法链接。您不能使用sudo / bin / su - 成为用户,您需要具有在sudo中以该用户身份运行命令的权限,或者能够直接对其进行操作(对于pbrun,pfexec或其他受支持的方法也是如此)。 “
以上部分是否适用于我的用例?
答案 0 :(得分:1)
become_flags
对于实现以“orafmw”帐户运行命令的目标似乎是多余的。如果您这样做是一个快速测试:
- role: fmw-software
become: true
become_user: 'orafmw'
become_method: sudo
command: touch /tmp/whomadethis
新文件“/ tmp / whomadethis”是否在远程计算机上创建并由orafmw
帐户拥有?如果是,则将command:
模块所做的调用替换为您需要运行的命令。
更好的是,不要使用command:
模块,而是使用内置的Ansible模块,并根据需要设置become_*
选项。