Hii

"splitpath.py" isn't a valid key for the config file. The correct one
is "filter_plugins", see:
https://docs.ansible.com/ansible/latest/reference_appendices/config.html#default-filter-plugin-path

But I don't see why you would need such heavy weapons if all you want
is a list of package names that have pending updates.
This should roughly do the same, without the complexity of custom filters:


- name: Check for pending updates
  become: true
  hosts: all

  tasks:
    - name: Update cache
      apt:
        update-cache: yes
      changed_when: false

    - name: Fetch package list of updates
      command: apt list --upgradable
      register: aptlist

    - set_fact:
        updates: "{{ aptlist.stdout_lines | difference(['Listing...'])
| map('regex_replace', '^(.*?)\/(.*)', '\\1') | list }}"

    - debug: var=updates


On Tue, 4 Feb 2020 at 01:12, Work-Hard <[email protected]> wrote:
>
> Hello, Please see below
> ansible.cfg
> [defaults]
> inventory = ./hosts
>
> splitpart.py = /etc/ansible/splitpart.py/
>
> splitpart.py
> def splitpart (value, index, char = ','):
>     if isinstance(value, (list, tuple)):
>         ret = []
>         for v in value:
>             ret.append(v.split(char)[index])
>         return ret
>     else:
>         return value.split(char)[index]
>
> class FilterModule(object):
>     def filters(self):
>         return {'splitpart': splitpart
>
>
> playbook
>   tasks:
>     # do an "apt-get update", to ensure latest package lists
>     - name: apt-get update
>       apt:
>         update-cache: yes
>       changed_when: 0
>
>     # get a list of packages that have updates
>     - name: get list of pending upgrades
>       command: apt-get --simulate dist-upgrade
>       args:
>         warn: false # don't warn us about apt having its own plugin
>       register: apt_simulate
>       changed_when: 0
>
>     # pick out list of pending updates from command output. This essentially
>     # takes the above output from "apt-get --simulate dist-upgrade", and
>     # pipes it through "cut -f2 -d' ' | sort"
>     - name: parse apt-get output to get list of changed packages
>       set_fact:
>         updates: '{{ apt_simulate.stdout_lines | select("match", "^Inst ") | 
> list | splitpart(1, " ") | list | sort }}'
>       changed_when: 0
>
>     # tell user about packages being updated
>     - name: show pending updates
>       debug:
>         var: updates
>       when: updates.0 is defined
>
>
> playbook output
>
> PLAY [myotherserver] 
> *****************************************************************************************************************************
>
> TASK [Gathering Facts] 
> ***************************************************************************************************************************
> ok: [10.0.2.236]
>
> TASK [apt-get update] 
> ****************************************************************************************************************************
> ok: [10.0.2.236]
>
> TASK [get list of pending upgrades] 
> **************************************************************************************************************
> ok: [10.0.2.236]
>
> TASK [parse apt-get output to get list of changed packages] 
> **************************************************************************************
> fatal: [10.0.2.236]: FAILED! => {"msg": "template error while templating 
> string: no filter named 'splitpart'. String: {{ apt_simulate.stdout_lines | 
> select(\"match\", \"^Inst \") | list | splitpart(1, \" \") | list | sort }}"}
>
> PLAY RECAP 
> ***************************************************************************************************************************************
> 10.0.2.236                 : ok=3    changed=0    unreachable=0    failed=1   
>  skipped=0    rescued=0    ignored=0
>
> --
> 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 view this discussion on the web visit 
> https://groups.google.com/d/msgid/ansible-project/9de09a5f-1173-43b7-a2d7-3332ba0e060d%40googlegroups.com.



-- 
Dick Visser
Trust & Identity Service Operations Manager
GÉANT

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CAL8fbwPP-nRd%3DmngXwsmhgqcrPkfmPbaDoDCJvamwwy23uA34g%40mail.gmail.com.

Reply via email to