我有以下用例。用户运行ansible play book并提供用户(-e user =)。在剧本中,正如预期的那样,我确实成了并成为了_user。但是,我只想在提供的用户名与他自己的用户名(静态已知)不同时才这样做。
我试图有条件地包含一个文件,我将在那里做成,但到目前为止这似乎没有用。
以下是我的一些代码:
第一张/剧本档案:
---
- name: example
hosts: examplehost
tasks:
- include: "usersetup.yml"
when: "{{ user }} != {{ user_id }}"
第二个文件(usersetup.yml)
我不清楚这个文件的格式,因为我对这个过程比较陌生,但我现在有:
- become: yes
- become_user: "{{ user }}"
当然,这不起作用,所以欢迎任何想法/建议。如果需要,我会非常乐意提供更多说明。感谢。
答案 0 :(得分:6)
I am posting my own solution for anyone else who may encounter the same situation.
Basically, here is the syntax in the playbook to conditionally become another user.
become: "{{ 'no' if user == ansible_user else 'yes' }}"
become_user: "{{ edge_user }}"
The condition can be whatever you want. Hope this helps!
答案 1 :(得分:0)
此外,成为远程主机上的用户与运行Ansible的本地用户不同:
become: "{{ 'no' if user == lookup('env', 'USER') else 'yes' }}"
become_method: sudo
become_user: "{{user}}"
希望它有所帮助。