The original problem is you're comparing 'NoneType' and 'str'. So, for at least one of your principals there's no krblastpwdchange. You need to work on the subset of data relevant to the comparison.

On 2/23/24 2:09 PM, lift...@gmail.com wrote:
I'm not including the entire playbook, but the URI module call where user_show gets registered, then the debug statements:

  - name: Run user_show from IDM API using previously stored session cookie
    ansible.builtin.uri:
      url: "https://{{idmfqdn}}/ipa/session/json";
      method: POST
      headers:
        Cookie: "{{ login.set_cookie }}"
        Referer: "https://{{idmfqdn}}/ipa";
        Content-Type: "application/json"
        Accept: "application/json"
      body_format: json
      body: "{\"method\": \"user_show\",\"params\": [[ \"{{ item }}\"],{\"all\": true,\"version\": \"{{ api_vers }}\"}]}"
    register: user_show
    loop: "{{ uid | json_query('[:10]') }}"


  - name: Set expire date
    ansible.builtin.set_fact:
      expire_date: '{{ lookup(''pipe'', ''date -u --date="today + 10 days" +%Y%m%d000000Z'') }}'

  - name: Show expire date
    ansible.builtin.debug:
      msg: "{{ expire_date }}"

  - name: Show user info
    debug:
      msg: "{{ user_show.results | json_query('[*].json.result.result.{uid: uid[0], pwdchg: krblastpwdchange[0].__datetime__}') }}"

Thanks,
Harry
On Friday, February 23, 2024 at 1:58:04 PM UTC-5 Todd Lewis wrote:

    Without showing us the expression you used in your debug's "msg:",
    this doesn't tell us anything.


    On 2/23/24 1:05 PM, lift...@gmail.com wrote:
    Looks OK to me:

    TASK [Show user info]
    
**************************************************************************************************************************************************************************************
    ok: [localhost] => {
        "msg": [
            {
                "pwdchg": "20210416141027Z",
                "uid": "user1"
            }
        ]
    }


    Thanks,
    Harry
    On Friday, February 23, 2024 at 12:13:07 PM UTC-5 Rowe, Walter P.
    (Fed) wrote:

        {{ user_show.results |
        json_query('[*].json.result.result.{uid: uid[0], pwdchg:
        krblastpwdchange[0].__datetime__}') }}

        I would display this info in a debug to see what the
        resulting data stream looks like. Maybe the
        selectattr('pwdchg') is in inaccurate reference to pwdchg?


        Walter
        --
        Walter Rowe, Division Chief
        Infrastructure Services Division
        Mobile: 202.355.4123 <tel:(202)%20355-4123>
        On Feb 23, 2024, at 12:09 PM, lift...@gmail.com
        <lift...@gmail.com> wrote:

        Just pull out those fields from the returned user
        information.  I use that in 2 or 3 other playbooks so I know
        that it works.

        Thanks,
        Harry

        On Friday, February 23, 2024 at 11:53:04 AM UTC-5 Rowe,
        Walter P. (Fed) wrote:

            pwd_expire_soon: "{{ user_show.results |
            json_query('[*].json.result.result.{uid: uid[0], pwdchg:
            krblastpwdchange[0].__datetime__}') |
            selectattr('pwdchg', 'lessthan', 'expire_date') | list }}"

            What are you expecting this red portion to do? I don't
            think it is valid in json_query.

            Walter
            --
            Walter Rowe, Division Chief
            Infrastructure Services Division
            Mobile: 202.355.4123 <tel:(202)%20355-4123>

            On Feb 23, 2024, at 11:30 AM, lift...@gmail.com
            <lift...@gmail.com> wrote:

            I am trying to determine when user's password's are
            going to expire in the next 10 days.  After I traverse
            my FreeIPA users and store those users into a variable,
            I try to set a fact like so:
              - name: Find users who's password will expire in the
            next 10 days
                set_fact:
                  pwd_expire_soon: "{{ user_show.results |
            json_query('[*].json.result.result.{uid: uid[0],
            pwdchg: krblastpwdchange[0].__datetime__}') |
            selectattr('pwdchg', 'lessthan', 'expire_date') | list }}"

            When I run my playbook, I get the following error:

            fatal: [localhost]: FAILED! => {"msg": "Unexpected
            templating type error occurred on ({{ user_show.results
            | json_query('[*].json.result.result.{uid: uid[0],
            pwdchg: krblastpwdchange[0].__datetime__}') |
            selectattr('pwdchg', 'lessthan', 'expire_date') | list
            }}): '<' not supported between instances of 'NoneType'
            and 'str'. '<' not supported between instances of
            'NoneType' and 'str'"}

            I can't seem to find what the issue is.  I originally 
            had '<' instead of 'lessthan' but got the same error. 
            Any ideas?

            Thanks,
            Harry

-- 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
            ansible-proje...@googlegroups.com.
            To view this discussion on the web visit
            
https://groups.google.com/d/msgid/ansible-project/a1131cb0-bc23-46bb-afbf-ca9ad6f4ce34n%40googlegroups.com
            
<https://groups.google.com/d/msgid/ansible-project/a1131cb0-bc23-46bb-afbf-ca9ad6f4ce34n%40googlegroups.com?utm_medium=email&utm_source=footer>.


-- 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 ansible-proje...@googlegroups.com.
        To view this discussion on the web visit
        
https://groups.google.com/d/msgid/ansible-project/c0b4de3d-50e2-4fff-85b1-0437076137dcn%40googlegroups.com
        
<https://groups.google.com/d/msgid/ansible-project/c0b4de3d-50e2-4fff-85b1-0437076137dcn%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 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 ansible-proje...@googlegroups.com.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/ansible-project/f76c158f-1107-4d10-8977-12638128d056n%40googlegroups.com
    
<https://groups.google.com/d/msgid/ansible-project/f76c158f-1107-4d10-8977-12638128d056n%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- Todd

--
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 ansible-project+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/6c29210e-e854-414c-9007-13c37edb3265n%40googlegroups.com <https://groups.google.com/d/msgid/ansible-project/6c29210e-e854-414c-9007-13c37edb3265n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
Todd

--
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 ansible-project+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/cfc1101d-0d2e-42c8-beaa-c86ffc979ecb%40gmail.com.

Reply via email to