Ansible中变成和变成用户的区别
最近,我开始钻研Ansible并编写自己的剧本。然而,我很难理解Ansible中变成和变成用户的区别,ansible,ansible-playbook,ansible-2.x,Ansible,Ansible Playbook,Ansible 2.x,最近,我开始钻研Ansible并编写自己的剧本。然而,我很难理解been和been\u user之间的区别。 据我所知,been\u user类似于su,而been的意思类似于sudo su或“作为sudo用户执行所有命令”。但有时这两种指令是混合的 您能解释一下它们的正确含义吗?been\u user定义了用于的用户 been只是一个激活或取消激活相同功能的标志 这里有三个例子可以说明这一点: 此任务将作为root执行,因为root是权限提升的默认用户: - do: something
been
和been\u user
之间的区别。
据我所知,been\u user
类似于su
,而been
的意思类似于sudo su
或“作为sudo用户执行所有命令”。但有时这两种指令是混合的
您能解释一下它们的正确含义吗?
been\u user
定义了用于的用户
been
只是一个激活或取消激活相同功能的标志
这里有三个例子可以说明这一点:
root
执行,因为root
是权限提升的默认用户:
- do: something
become: true
某人执行,因为用户已明确设置为:
- do: something
become: true
become_user: someone
been\u user
执行任何操作,因为未设置been
,并且默认为false
/no
:
- do: something
become_user: someone
true
下面是一个示例,其中包含:
第一个以用户身份运行,第二个以root用户身份运行
据我所知,been_user与su类似,been的意思是sudo su或“作为sudo用户执行所有命令”
默认的been_方法
是sudo
,因此sudo做某事
或sudo-u做某事
Fineprint:当然“do:something”是伪代码。把你真正的Ansible模块放在那里
been:yes
=sudo
been\u用户:用户名
=sudo-u用户名
been:yes
been\u用户:root
相当于been:yes
这就清楚地解释了区别。如果我需要用sudo运行一批任务,我通常会使用include_任务语句。 这也有助于将一个大的剧本分成几个部分。 比如说
- name: prepare task x
include_tasks: x-preparation.yml
when: condition is true
args:
apply:
become: yes
使用标记时,这也是一种方便的方法:
- name: execute tasks x
include_tasks: x-execution.yml
args:
apply:
tags: exec
tags:
- exec
重要的是,您还需要在include_tasks语句上添加一个标记
希望这对任何人都有帮助因此,如果我想在playbook中为任务启用权限提升,我可以在定义任务之前设置为:True一次,之后只要在我想的时候使用been_user,对吗?这取决于“before”的含义。如果对单个任务设置
变为
,则它仅对该单个任务处于活动状态。如果要将多任务的设置为,则需要在更高级别上进行设置。您可以为此使用或,也可以设置您的角色。@udondan我在使用第2点时遇到了错误。你能帮帮我吗?
- name: execute tasks x
include_tasks: x-execution.yml
args:
apply:
tags: exec
tags:
- exec