It turns out I had various dashes and apostrophes (isolated single quotes 
spell trouble, too) smattered throughout the user's first and last names. 
So, after quoting dates, password hashes, and name fields, I tried with the 
full large dictionary. Now my play works! Even more exciting, I have new 
users appearing on my IPA server with appropriate data. Thanks Dick and 
Matt! 

If you're ever in Champaign, IL USA, look me up. I'll buy you a coffee.

Joanna

On Wednesday, June 22, 2016 at 8:24:29 PM UTC-5, Joanna Delaporte wrote:
>
> Yup, a test with a short dict of only three records failed. Until I quoted 
> all the date fields containing dashes. 
> Each user record contains two dates that formatted like YYYY-MM-DD, which 
> apparently breaks yaml. It makes sense now, but hadn't occurred to me until 
> I was driving home a while ago.
>
> I was using this:
>     dob: 1962-01-21
>     dateexpires: 2018-06-19
>     epochexpiry: 1529415778
>
>
> Dashes break hashes, so it fixed it to quote the values:  
>     dob: '1962-01-21'
>     dateexpires: '2018-06-19'
>     epochexpiry: 1529415778
>
> I have yet to tweak my 40,000 lines (about 4000 records) and try with 
> those.
>
>
> On Wednesday, June 22, 2016 at 7:04:09 PM UTC-5, Dick Davies wrote:
>>
>> I always find with_dict fiddly, it'll work eventually. I can't see 
>> anything obvious at first glance 
>> ( 
>> I do think 
>>
>>    --email={{ item.value.name }}@domain 
>>
>> should be 
>>
>>    --email="{{ item.key }}@domain" 
>>
>> but I don't think Ansible is getting as far as even opening the dict yet 
>> ) 
>>
>> When I get this kind of issue, I cut down the size of the dict to a 
>> little sample set, just to verify the YAML 
>> is formatted correctly (no whitespace gotchas?). 
>>
>> Also, are you sure the dict is in scope at this point? 
>>
>> On 22 June 2016 at 20:55, Joanna Delaporte <[email protected]> wrote: 
>> > I messed up and deleted my first post. Sorry! 
>> > 
>> > I think I need another pair of eyes here. I am attempting to run a dict 
>> of 
>> > users through an ipa user-add command, but it fails with the error 
>> > "with_dict expects a dict." I believe I have formatted my dict 
>> correctly 
>> > (it's about 40,000 lines long, generated from a python3 script): 
>> > 
>> > --- 
>> > students: 
>> >   username1: 
>> >       lastname: jibberish 
>> >       firstname: jibberish 
>> >       firstinitial: jibberish 
>> >       studentid: jibberish 
>> >       dob: jibberish 
>> >       dateexpires: 2018-06-19 
>> >       epochexpiry: 1529415778 
>> >       uid: jibberish 
>> >       passwordhash: "jibberish" 
>> >   username2: 
>> >       lastname: jibberish 
>> >       firstname: jibberish 
>> >       firstinitial: jibberish 
>> >       studentid: jibberish 
>> >       dob: jibberish 
>> >       dateexpires: 2018-06-19 
>> >       epochexpiry: 1529416593 
>> >       uid: jibberish 
>> >       passwordhash: "jibberish" 
>> >   username3: 
>> >       lastname: jibberish 
>> >       firstname: jibberish 
>> >       firstinitial: jibberish 
>> >       studentid: jibberish 
>> >       dob: jibberish 
>> >       dateexpires: 2018-06-19 
>> >       epochexpiry: 1529416755 
>> >       uid: jibberish 
>> >       passwordhash: "jibberish" 
>> > 
>> > And here is the play where I am trying to use it: 
>> >   - name: Add existing student users to ipaserver 
>> >     command: "/bin/ipa user-add 
>> >             {{ item.key }} 
>> >             --first='{{ item.value.firstname }}' 
>> >             --last='{{ item.value.lastname }}' 
>> >             --cn='{{item.value.firstname}} {{item.value.lastname}}' 
>> >             --email={{ item.value.name }}@domain 
>> >             --shell=/bin/bash 
>> >             --homedir='/home/students/{{ item.value.firstinitial }}/{{ 
>> > item.key }}' 
>> >             --uid='{{ item.value.uid }}' 
>> >             --gidnumber='{{ item.value.uid }}' 
>> >             --skeleton=/etc/skel 
>> >             --setattr userpassword='{crypt}{{ 
>> item.value.passwordhash}}' 
>> >             --title=student" 
>> >     with_dict: "{{students}}" 
>> >     register: added_students 
>> > 
>> > And the error: 
>> > TASK [Add existing student users to ipaserver] 
>> > ********************************* 
>> > fatal: [216.125.253.133]: FAILED! => {"failed": true, "msg": "with_dict 
>> > expects a dict"} 
>> > Running it verbose only gives me the task path in addition to the above 
>> > error. 
>> > 
>> > Is there a maximum size a dict can be? Is there something else wrong 
>> with my 
>> > dict? I have tried it as a list (with a -<space> before each username 
>> and 
>> > with_items in the play), but got a unicode error. I'm stumped. 
>> > 
>> > Thanks for taking a look! 
>> > 
>> > -- 
>> > 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/2fe49d88-e756-43ab-b6e6-e99ac62b6ffc%40googlegroups.com.
>>  
>>
>> > For more options, visit https://groups.google.com/d/optout. 
>>
>

-- 
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/2d39b766-570d-4d5d-9840-ee2636040a19%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to