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

最近,我开始钻研Ansible并编写自己的剧本。然而,我很难理解
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
    
  • …除非在更高级别上(例如区块、剧本、组或主机变量等)将BENG设置为
    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