Maria Montenegro
Maria Montenegro

Reputation: 410

Ansible, list object has no attribute

I am using Ansible 2.3.0.0 and I have tested in Ansible 2.4.0.0, obtaining the same result. My problem is very simple, but I cannot see the problem.

I have defined a list of objects in Ansible as follows:

  vars:
     password_text_to_encrypt:
          - { line: "{{truststore_pass }}" , regexp: '\${TRUSTSTORE_PASS}*'}
          - { line: "{{ keystore_pass }}" , regexp: '\${KEYSTORE_PASS}*'}
          - { line: "{{ gp_pass }}" , regexp: '\${GP_PASS}*'}
          - { line: "{{ datasource_password }}" , regexp: '\${DATASOURCE_PASS}*'}
          - { line: "{{ server_password }}" , regexp: '\${SERVER_PASSWORD}*'}
          - { line: "{{ sftp_password }}" , regexp: '\${SFTP_PASSWORD}*'}
          - { line: "{{ db_userpassword }}" , regexp: '\${DB_PASSWORD}*'}
     roles:
       - basic_role

My Basic_role just prints the items, and I would like to obtain the content of each line:

---

- name: "print password"
  debug: 
    msg: "The content of the line is: {{ item.line}}"
  with_nested:
    - "{{password_text_to_encrypt}}"

But the result that I obtain is:

FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'list object' has no attribute 'line'\n\nThe error appears to have been in.....

If I change item.line to just item, it works but it prints:

ok: [localhost] => (item=[u'regexp', u'line']) => {
    "item": [
        "regexp",
        "line"
    ],
    "msg": "The content of the line is: [u'regexp', u'line']"
}
.
.
.

To summarize, Ansible does not consider the content of line o regexp. I have been doing tests and the variable which are used to init line and regexp are not empty.

Upvotes: 2

Views: 12171

Answers (2)

techraf
techraf

Reputation: 68449

Use with_items instead of with_nested.

Upvotes: 2

Adam Miller
Adam Miller

Reputation: 927

I think you want loops and includes because you're getting a flattened list which is expected (as per the documentation).

Upvotes: -1

Related Questions