Ansible, the field args has an invalid value [duplicate]

纵然是瞬间 提交于 2019-12-11 01:32:36

问题


I added a role called common to my playbook.yml, and provisioning fails with the message:

TASK [common : Host is present] ************************************************
==> cd: fatal: [localhost]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'unicode object' has no attribute 'host_ip'\n\nThe error appears to have been in '/vagrant/ansible/roles/common/tasks/main.yml': line 7, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Host is present\n  ^ here\n"}

here is the content of roles/common/tasks/main.yml, the particular tasks which fails

- name: Host is present
  lineinfile:
    dest: /etc/hosts
    regexp: "^{{ item.host_ip }}"
    line: "{{ item.host_ip }} {{ item.host_name }}"
  with_items: hosts
  tags: [common]

And here is the content of roles/common/defaults/main.yml

hosts: [
  { host_ip: "10.100.198.200", host_name: "cd"},
  { host_ip: "10.100.198.201", host_name: "prod"},
  { host_ip: "10.100.198.202", host_name: "logging"},
  { host_ip: "10.100.194.201", host_name: "serv-disc-01"},
  { host_ip: "10.100.194.202", host_name: "serv-disc-02"},
  { host_ip: "10.100.194.203", host_name: "serv-disc-03"},
  { host_ip: "10.100.193.200", host_name: "proxy"},
  { host_ip: "10.100.192.200", host_name: "swarm-master"},
  { host_ip: "10.100.192.201", host_name: "swarm-node-1"},
  { host_ip: "10.100.192.202", host_name: "swarm-node-2"},
]

obsolete_services:
  - puppet
  - chef-client

Why ansible claims that args is undefined. The example I'm using is not made by me and is few months old, so I wonder, if the way ansible processes variables in roles has changed, and thus it doesn't work.


回答1:


with_items: hosts

This is obsolete syntax. You can't use bare variables for loops.

Correct syntax: with_items: "{{ hosts }}"



来源:https://stackoverflow.com/questions/40381856/ansible-the-field-args-has-an-invalid-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!