On Monday, August 3, 2015 at 8:29:28 PM UTC-4, Dewey Hylton wrote:
>
> hi all. i’m not new to ansible but am still apparently fairly green with 
> regards to what appears to me to be non-trivial stuff.
>
> my current goal is to replace an aging python script which does something 
> like this (very bad pseudo-code but will hopefully make sense):
>
> for each user, password:
>     if user exists:
>         password = password+randomtext
>         if ostype = 1:
>             passhash = hash1(password)
>         elif ostype = 2:
>             passhash = hash2(password)
>         else:
>             passhash = hash3(password)
>
>         set user password using passhash (done via user: in unusable)
>
> do to os restrictions, i am creating the password hash via local_action 
> python/passlib.hash (the jinja2 | password_hash filter doesn’t provide the 
> needed hash in all situations). this is a task by itself. the text for the 
> password is somewhat programmatically created, requiring its own task.
>
> i’ve been able to get all this working in ansible playbook format using a 
> single user / password combination across multiple hosts with the multiple 
> hash requirements. what i’m failing to figure out is how to loop through 
> multiple users each having their own base password. this same lack of 
> understanding will also cause me to fail when dealing with multiple files 
> later in this same project.
>
> the bottom line is that i’m trying to create a loop within a loop; the 
> outer loop is per user, the inner loop is dealing with the password hash 
> and requires multiple tasks. this is the way it works in the original 
> python; ansible of course doesn’t work this way and i’m having difficulty 
> figuring out how to do this without running the playbook multiple times 
> with different variables. i've tried and failed to figure out how to do 
> this via 'register' and 'set_fact' ...
>
> i’ve gotten good feedback via irc, but ultimately need a bigger clue 
> stick. please whack away.
>

an example failure on my part ... given the following:


    vars:
    - users:
      - newtestuser1:
        username: newtestuser1
        basetext: foo1
        password: none
      - newtestuser2:
        username: newtestuser2
        basetext: foo2
        password: none

    tasks:
    - name: generate passwd text
      local_action: shell python -c 'from datetime import datetime; 
nowiso=datetime.now().isoformat(); print("%s%s%s" % (nowiso[3], "{{ 
item.basetext }}", nowiso[5:7]))'
      register: password
      with_items: "{{ users }}"


is there a way to take the output (password.stdout ?) for each iteration 
and assign it to username.password so that they can be properly accessed 
for later processing? or is there a different way to access these variables 
that i'm just missing?

in the end, i need to create a password hash for each of these text 
passwords, and associate the hash with the proper username for use with the 
user: module ...

-- 
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/5f8967b9-d65f-4221-bc65-9f00d719ba37%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to