Linux 使用ansible时,args必须是字典错误
我正在编写Ansible playbook来执行我的一些任务。在我的一项任务中,我需要切换到特定的目录,然后使用sudo执行命令,但我需要首先切换到root用户来执行所有这些操作,否则它将无法工作。一般来说,这就是我在没有ansible的情况下所做的: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 &
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用户
,因为据我所知,这是默认设置。但话说回来,如果它对你有效,它也会有效