Linux 使用ansible时,args必须是字典错误

Linux 使用ansible时,args必须是字典错误,linux,ansible,Linux,Ansible,我正在编写Ansible playbook来执行我的一些任务。在我的一项任务中,我需要切换到特定的目录,然后使用sudo执行命令,但我需要首先切换到root用户来执行所有这些操作,否则它将无法工作。一般来说,这就是我在没有ansible的情况下所做的: david@machineA:/tmp/parallel-20140422$ sudo su root@machineA:/tmp/parallel-20140422# sudo ./configure && make &

我正在编写Ansible playbook来执行我的一些任务。在我的一项任务中,我需要切换到特定的目录,然后使用sudo执行命令,但我需要首先切换到root用户来执行所有这些操作,否则它将无法工作。一般来说,这就是我在没有ansible的情况下所做的:

david@machineA:/tmp/parallel-20140422$ sudo su
root@machineA:/tmp/parallel-20140422# sudo ./configure && make && make install
经过以上步骤,我看到GNU并行库已正确安装在我的系统中。但是使用Ansible执行以下步骤时,我得到了一个错误:

- name: install gnu parallel 
  shell: ./configure && make && make install
  args:
    chdir=/tmp/parallel-20140422
  sudo: true
  sudo_user: root
下面是我得到的错误:

fatal: [machineA] => args must be a dictionary, received chdir=/tmp/parallel-20140422

我正在使用1.5.4 ansible。我不确定我的ansible任务有什么问题?

您的任务可能如下所示:

- name: install gnu parallel 
  shell: ./configure && make && make install
  args:
    chdir: /tmp/parallel-20140422
  sudo: true
  sudo_user: root
我有点困惑,你必须给
root
作为
sudo\u用户
,因为据我所知,这是默认设置。但话说回来,如果它对你有效,它也会有效