I've added an issue to the Ansible github project for this:
https://github.com/ansible/ansible/issues/31705

For what it's worth, if I convert the variable to a dictionary (instead of 
a list) and pass that through the list Jinja2 filter it works as a list:

---
- hosts: localhost
  gather_facts: false


# Run like this:
#   ./test01.yml --ask-vault-pass
#   (Enter "test" for the password)


  vars:
    userlist:
      user1:
        password: "user1pwd"
      user2:
        password: !vault |
            $ANSIBLE_VAULT;1.1;AES256
            
62613930343865373434316635616466383633396539303135666565363539396662386636303763
            
3237393664306333333063363863366239323733336432350a396337393861363463613734306339
            
34393165343861363534656533383834353233323464626461393031623265373537353732356337
            
3634353837343363370a366531633331333462333261376633636662323131356366653566646239
            3830
      user3:
        password: "user3pwd"


  tasks:
  - name: "Dict variable"
    debug:
      msg: "name: {{item.key}}, password: {{item.value.password}}"
    with_dict: "{{ userlist }}"


  - name: "List variable"
    debug:
      msg: "name: {{item}}, password: {{item.password}}"
    with_items: "{{ userlist.values() | list }}"


On Wednesday, October 11, 2017 at 9:24:57 PM UTC-5, Dan Linder wrote:

> I've have a dictionary variable setup that has accounts and passwords:
>
>     password_list:
>       - { name: "user1",
>           password: "user1pwd"
>         }
>       - { name: "user2",
>           password: "user2pwd"
>         }
>       - { name: "user3",
>           password: "user3pwd"
>         }
>
>
>
> This variable it works as expected.  When I update one of the passwords to 
> a vaulted version like this:
>
>     password_list:
>       - { name: "user1",
>           password: "user1pwd"
>         }
>       - { name: "user2",
>           password: !vault |
>                     $ANSIBLE_VAULT;1.1;AES256
>                     
> 66366265333266666432626431646631356664663262326535346265353939383239626634636331
>                     
> 6462666364303539336132346430346432333564346663300a623333613666333330626330643735
>                     
> 64613664383733333839313434303433663164363030383663336663656432613965663862656237
>                     
> 3631366664646332610a636230616334306232336263313139623264663338613538643163356239
>                     3732
>         }
>       - { name: "user3",
>           password: "user3pwd"
>         }
>
>
>
>
> ...the ansible-playbook complains about it with this message:
>
> The offending line appears to be:
>
>       - { name: "user2",
>           password: !vault |
>                            ^ here
>
> exception type: <class 'yaml.scanner.ScannerError'>
> exception: while scanning for the next token
> found character that cannot start any token
>   in "<unicode string>", line 30, column 28
>
>
>
> I've tried variations such as removing the "|" and putting everything from 
> "!vault" through "3732" on the same line (removing spaces), using a "<" 
> instead of the "|", etc.
>
> Am I doing it wrong?  Is this a bug in the vault string handling that I 
> should report?  Or is this a "not yet implemented" variation on vault data 
> that I should put in for a feature request?
>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/2c6e74a2-a3a0-4631-b6e0-66a56235adcb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to