首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible/Yaml --有条件地成为另一个用户

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

Stack Overflow用户
提问于 2017-05-11 16:39:39
回答 2查看 1.6K关注 0票数 5

我有以下用例。用户运行ansible实战手册并向用户提供(具有-e user=)。在剧本中,不出所料,我确实变成了become_user。但是,只有当提供的用户名不同于他自己的用户名(这是静态已知的)时,我才想这样做。

我尝试有条件地包含一个文件,我将在其中执行成为,但到目前为止,这似乎不起作用。

下面是我的一些代码:

第一个/playbook文件:

代码语言:javascript
复制
---
- name: example
hosts: examplehost
tasks:
  - include: "usersetup.yml"
    when: "{{ user }} != {{ user_id }}"

第二个文件(usersetup.yml)

我不清楚这个文件的格式,因为我对这个过程比较陌生,但我目前有:

代码语言:javascript
复制
- become: yes
- become_user: "{{ user }}"

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

EN

回答 2

Stack Overflow用户

发布于 2017-05-16 17:21:38

我正在发布我自己的解决方案,以帮助其他可能遇到同样情况的人。

基本上,这里是行动手册中有条件地成为另一个用户的语法。

代码语言:javascript
复制
become: "{{ 'no' if user == ansible_user else 'yes' }}"
become_user: "{{ edge_user }}"

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

票数 13
EN

Stack Overflow用户

发布于 2018-02-23 08:17:47

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

代码语言:javascript
复制
become: "{{ 'no' if user == lookup('env', 'USER') else 'yes' }}"
become_method: sudo
become_user: "{{user}}"

希望能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43910513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档