如何为特定任务覆盖 ansible_become?

sky*_*lin 3 ansible

我的主机文件为给定的主机定义:

ansible_ssh_user=root
ansible_become_user=my_user
ansible_become=true
Run Code Online (Sandbox Code Playgroud)

在几个任务中,我不想成为 my_user。设置become: false无效,同时ansible_become: false导致“错误:ansible_become 不是 Ansible 任务或处理程序中的合法参数”

我正在尝试做的可能吗?我假设典型的模式是与我在这里所做的相反,并以 my_user 身份连接,然后become_user: root根据需要使用?

小智 7

重写所有内容以反转变成逻辑并不总是可行的。有时您只需要覆盖特定任务的库存成为设置,有一种简单的方法可以做到这一点。不是become在任务上设置,而是ansible_become为任务设置 var :

- name: This will run without become
  command: whoami
  vars:
    ansible_become: false
Run Code Online (Sandbox Code Playgroud)


Rav*_*ezu 1

  1. 您可以从主机文件中删除ansible_become_user=my_user和。ansible_become=true
  2. 正如您所说,您有几个任务,您不想成为用户,请将become: yes和添加become_user: <some-user>到您想成为的任务中。