如何覆盖特定任务的ansible_become?

时间:2016-05-03 10:31:34

标签: ansible

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

ansible_ssh_user=root
ansible_become_user=my_user
ansible_become=true

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

我想做的是什么?我假设典型的模式与我在这里做的相反,并以my_user身份连接,然后根据需要使用become_user: root

3 个答案:

答案 0 :(得分:1)

  1. 您可以从hosts文件中删除ansible_become_user=my_useransible_become=true
  2. 正如你所说,你有几个任务,你不想成为 用户,将become: yesbecome_user: <some-user>添加到您想要成为的任务中。

答案 1 :(得分:1)

重写所有内容以反转变为逻辑并不总是可行的。有时您只需要重写清单就可以完成特定任务,这是一种简单的方法。不用在任务上设置become,而是要为任务设置变量ansible_become

- name: This will run without become
  command: whoami
  vars:
    ansible_become: false

答案 2 :(得分:0)

---
- name: example play
  hosts: myhost
  tasks:
  - name: run as user in inventory
    debug: msg=$USER

  - name: run as root user
    become: true
    become_user: root
    debug: msg=$USER