我有以下用例。用户运行ansible实战手册并向用户提供(具有-e user=)。在剧本中,不出所料,我确实变成了become_user。但是,只有当提供的用户名不同于他自己的用户名(这是静态已知的)时,我才想这样做。
我尝试有条件地包含一个文件,我将在其中执行成为,但到目前为止,这似乎不起作用。
下面是我的一些代码:
第一个/playbook文件:
---
- name: example
hosts: examplehost
tasks:
- include: "usersetup.yml"
when: "{{ user }} != {{ user_id }}"第二个文件(usersetup.yml)
我不清楚这个文件的格式,因为我对这个过程比较陌生,但我目前有:
- become: yes
- become_user: "{{ user }}"这当然不起作用,所以欢迎任何想法/建议。如果需要的话,我非常乐意提供更多的澄清。谢谢。
发布于 2017-05-16 17:21:38
我正在发布我自己的解决方案,以帮助其他可能遇到同样情况的人。
基本上,这里是行动手册中有条件地成为另一个用户的语法。
become: "{{ 'no' if user == ansible_user else 'yes' }}"
become_user: "{{ edge_user }}"条件可以是您想要的任何条件。希望这能有所帮助!
发布于 2018-02-23 08:17:47
此外,要成为远程主机上不同于运行Ansible的本地用户的用户:
become: "{{ 'no' if user == lookup('env', 'USER') else 'yes' }}"
become_method: sudo
become_user: "{{user}}"希望能有所帮助。
https://stackoverflow.com/questions/43910513
复制相似问题