Warning while constructing a mapping in Ansible

Viewed 22608

Whenever I run my playbook the following warning comes up:

[WARNING]: While constructing a mapping from /etc/ansible/roles/foo/tasks/main.yml, line 17, column 3, found a duplicate dict key (file). Using last defined value only.

The relevant part of my main.yml in the tasks folder is like this:

(line 17 is the task to clean the files which seems a bit off so I guess the problem is with the previous "script" line)

- name: Run script to format output
  script: foo.py {{ taskname }} /tmp/fcpout.log
- name: Clean temp files
  file: path=/tmp/fcpout.log state=absent

And my vars file:

---
my_dict: {SLM: "114", Regular: "255", Production: "1"}
taskid: "{{my_dict[taskname]}}"

To run my playbook I do:

ansible-playbook playbooks/foo.yml --extra-vars "server=bar taskname=SLM"

What I'm trying to do is to take the command line arguments, set the hosts: with the "server" parameter, get the taskname and from that find out to which id refers to. This id is used as the first input to my python script which runs remotely.

The playbook works fine, but I don't understand why I get a warning. Could anyone explain what is wrong here?

2 Answers

I faced this warning because of using duplicate options in a module. For example, accidentally I used "host" option 2 times in the module definition like below:

 name: Create NEW DB User
 mysql_user:
   name: NEW USER NAME
   login_user: root
   login_password: Root Passwd
   password: NEW USER'S PASSWD
   host: localhost
   priv: 'DB NAME.*:ALL,GRANT'
   state: present
   host: localhost

The warning has been disappeared by omitting one of the host options.

Related