使用Ansible运行sudo / bin / su - username

时间:2016-11-28 14:54:19

标签: ansible-2.x

我可以手动执行以下操作 -

从我的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或其他受支持的方法也是如此)。 “

以上部分是否适用于我的用例?

1 个答案:

答案 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_*选项。