【问题标题】:Ansible/Yaml -- conditionally become another userAnsible/Yaml -- 有条件地成为另一个用户
【发布时间】:2017-05-11 08:39:39
【问题描述】:

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

这当然行不通,因此欢迎提出任何想法/建议。如果需要,我将非常乐意提供更多说明。谢谢。

【问题讨论】:

    标签: ansible yaml


    【解决方案1】:

    我正在为可能遇到相同情况的其他人发布我自己的解决方案。

    基本上,这是剧本中的语法,可以有条件地成为另一个用户。

    become: "{{ 'no' if user == ansible_user else 'yes' }}"
    become_user: "{{ edge_user }}"
    

    条件可以是任何你想要的。希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      另外,成为远程主机上的用户,该用户不同于运行 Ansible 的本地用户:

      become: "{{ 'no' if user == lookup('env', 'USER') else 'yes' }}"
      become_method: sudo
      become_user: "{{user}}"
      

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-02
        相关资源
        最近更新 更多