Closed. This question is opinion-based。它当前不接受答案。












想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

3年前关闭。



Improve this question




为什么ansible的成为成为用户,除非成为= yes否则什么都不做?

我想知道是否有人可以向我解释为什么为什么默默地使用become_user: xxx选项无法执行任何操作,除非您还添加了become: yes
有两个不同选择的意义何在,尤其是要避免诉求并且不说任何事情。

最佳答案

那是两件事。一个设置用户名,另一个设置以该用户身份运行任务,阻止或播放。如果您看一下这本剧本,也许是有道理的:

- hosts: all
  become_user: foo
  tasks:
    - shell: whoami
      register: a
    - shell: whoami
      become: yes
      register: b
    - block:
    - shell: whoami
          register: c
        - shell: whoami
          become: yes
          register: d
        - shell: whoami
          become: yes
          become_user: baz
          register: e
      become_user: bar
    - debug: var=a.stdout
    - debug: var=b.stdout
    - debug: var=c.stdout
    - debug: var=d.stdout
    - debug: var=e.stdout
TASK [setup] *******************************************************************
ok: [some.host]

TASK [command] *****************************************************************
changed: [some.host]

TASK [command] *****************************************************************
changed: [some.host]

TASK [command] *****************************************************************
changed: [some.host]

TASK [command] *****************************************************************
changed: [some.host]

TASK [command] *****************************************************************
changed: [some.host]

TASK [debug] *******************************************************************
ok: [some.host] => {
    "a.stdout": "realuser"
}

TASK [debug] *******************************************************************
ok: [some.host] => {
    "b.stdout": "foo"
}

TASK [debug] *******************************************************************
ok: [some.host] => {
    "c.stdout": "realuser"
}

TASK [debug] *******************************************************************
ok: [some.host] => {
    "d.stdout": "bar"
}

TASK [debug] *******************************************************************
ok: [some.host] => {
    "e.stdout": "baz"
}

您可以全局定义用户,但这并不意味着您想在每个任务上都使用它。

您甚至可以在 list ,组或主机变量中设置become_user(ansible_become_user),从而为每个主机,共置主机等定义唯一的sudo用户。但是,您仍然不希望再以该用户身份运行每个任务。

关于ansible - 为什么ansible的成为成为用户,除非成为= yes否则什么都不做?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35603049/

10-09 01:45