Ansible / Yaml - 有条件地成为另一个用户

时间:2017-05-11 08:39:39

标签: ansible yaml

我有以下用例。用户运行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 }}"

当然,这不起作用,所以欢迎任何想法/建议。如果需要,我会非常乐意提供更多说明。感谢。

2 个答案:

答案 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}}"

希望它有所帮助。