_rabin
(@rabin)
March 2, 2018, 10:24am
1
Hello all,
I like to use Ansible to remove few packages, but it seem not to support the wildecard option for package name matching.
name: Remove Packages
package:
name: “{{ item }}”
state: absent
tags:
packages_remove
with_items:
b43-*
hexchat
libreoffice*
In the above example I was expecting the for “b43-*” to match b43-openfwwf and b43-fwcutter but non of them was removed.
same for libreoffice, here is the output with -vvv
ok: [localhost] => (item=libreoffice*) => { "changed": false, "invocation": { "module_args": { "autoremove": null, "conf_file": null, "disable_gpg_check": false, "disablerepo": [], "enablerepo": [], "installroot": "/", "list": null, "name": [ "libreoffice*" ], "state": "absent" } }, "item": "libreoffice*", "msg": "Nothing to do" }
Any hints ?
Package is a very generic module with no extra functionality.
For more functionality you need to use the module for your package system.
_rabin
(@rabin)
March 2, 2018, 11:36am
3
I all ready tried that, same result bascily.
`
ok: [localhost] => (item=[u’b43-openfwwf’, u’b43-fwcutter’, u’hexchat’, u’libreoffice*‘, u’claws-mail’]) => {
“changed”: false,
“invocation”: {
“module_args”: {
“autoremove”: true,
“conf_file”: null,
“disable_gpg_check”: false,
“disablerepo”: ,
“enablerepo”: ,
“installroot”: “/”,
“list”: null,
“name”: [
“b43-openfwwf”,
“b43-fwcutter”,
“hexchat”,
“libreoffice*”,
“claws-mail”
],
“state”: “absent”
}
},
“item”: [
“b43-openfwwf”,
“b43-fwcutter”,
“hexchat”,
“libreoffice*”,
“claws-mail”
],
“msg”: “Nothing to do”
}
`
When I check the documentation for the dnf module it has nothing about wildcard so it doesn't support that.
_rabin
(@rabin)
March 3, 2018, 8:50pm
5
I was assuming it was possible, because of the example which allow to update all packages.
`
name: upgrade all packages
dnf:
name: “*”
state: latest
`
but it seems it is handled specifically in the code, and not passed directly to the dnf command.
if names == ['*'] and state == 'latest':
base.upgrade_all()
Thanks.
You probably have a workaround, but just in case you don't this should work to remove all packages staring with libreoffice
- dnf:
list: installed
register: r
- dnf:
name: "{{ r.results | selectattr('name', 'search', '^libreoffice') | map(attribute='name') | list }}"
state: absent
_rabin
(@rabin)
March 4, 2018, 12:19am
7
Nice trick, didn’t know about this filter.
much appreciated
thanks.