为什么 ansible become_user 什么都不做,除非 become=yes?
我想知道是否有人可以向我解释为什么使用该选项become_user: xxx
无法执行任何操作,除非您还添加become: yes
有两种不同的选择有什么意义,尤其是不能 su 并且什么也不说。
这是两个不同的东西。一个设置用户名,另一个以该用户身份运行任务、阻止或播放。如果你看一下这本剧本,也许是有道理的:
- 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
Run Code Online (Sandbox Code Playgroud)
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"
}
Run Code Online (Sandbox Code Playgroud)
您全局定义用户,但这并不意味着您要在每个任务中使用它。
您甚至可以在您的清单、组或主机变量中设置become_user
( ansible_become_user
),从而为每个主机、主机托管等定义一个唯一的 sudo 用户。您仍然不希望以该用户身份运行每个任务。
归档时间: |
|
查看次数: |
2498 次 |
最近记录: |