add pip support and some docs

This commit is contained in:
nd 2024-04-12 23:27:55 +02:00
parent 50614b4407
commit 3574eac7f6
5 changed files with 63 additions and 33 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
__pycache__

View file

@ -1,43 +1,39 @@
# Packages # Packages
## Supported Handels package management using system and language specific package tools
Only Apt and Debian Stretch. ## Defaults
Other versions might work but are not tested. ```
# sets the default for packages.pkg , see *pkg*
default_packages_pkg:
provider: system
```
## Parameters and defaults ## Parameters
packages:
pkg: {}
repos: {}
All configuration is to be placed inside the `packages` dict. All configuration is to be placed inside the `packages` dict.
``` ```
# dictionary of package names to install. The key is the name of the packages, value musst be != none as none is used as knock out. # name: *pkg*, see below for definition
pkg: {} pkg:
# dictionary of repositories to setup, the key is used as name for the repository. See **repo** for definition for the content # name: *repo*, see below for definition
repos: {} repos:
```
**pkg**:
```
# can be "system" or "pip-system"
provider: system
``` ```
**repo**: **repo**:
``` ```
# url to repo, example: "http://www.deb-multimedia.org stretch main non-free" key:
url: '' keyid:
keyurl:
# only set either key, keyurl or keyid + keyserver keyurl:
url:
# gpg key to add for this repo
key: ''
# url to download a gpg key for this repo from
keyurl: ''
# key id of the key to add, for example "36A1D7869245C8950F966E92D8576A8BA88D21E9"
keyid: ''
# key server to get the key from, for example "keyserver.ubuntu.com"
keyserver:
``` ```

View file

@ -1,3 +1,6 @@
packages: packages:
pkg: {} pkg: {}
repos: {} repos: {}
default_packages_pkg:
provider: system

View file

@ -0,0 +1,20 @@
#!/usr/bin/env python3
class FilterModule(object):
def filters(self):
return {
'packages_by_provider': self.packages_by_provider
}
def packages_by_provider(self, packages, provider, defaults=False):
filtered_packages = []
for key, value in packages.items():
if value == None:
continue
if defaults:
package = dict(defaults)
package.update(dict(value))
else:
package = dict(value)
if package['provider'] == provider:
filtered_packages.append(key)
return filtered_packages

View file

@ -1,14 +1,19 @@
- name: filter package list - name: filter package list
set_fact: set_fact:
pkgs: "{{ packages.pkg | dict2items | rejectattr('value', 'none') | map(attribute='key') | list }}" pkgs_system: "{{ packages.pkg | packages_by_provider(provider='system', defaults=default_packages_pkg) }}"
pkgs_pip_system: "{{ packages.pkg | packages_by_provider(provider='pip-system', defaults=default_packages_pkg) }}"
- name: list repositories to setup - name: list repositories to setup
debug: debug:
var: packages.repos var: packages.repos
verbosity: 1 verbosity: 1
- name: list packages to install - name: list system packages to install
debug: debug:
var: pkgs var: pkgs_system
verbosity: 1
- name: list pip packages to install
debug:
var: pkgs_pip_system
verbosity: 1 verbosity: 1
- name: install helper tools - name: install helper tools
@ -33,6 +38,11 @@
- name: ensure handlers are flushed - name: ensure handlers are flushed
meta: flush_handlers meta: flush_handlers
- name: install packages - name: install packages (system)
apt: apt:
pkg: "{{ pkgs }}" pkg: "{{ pkgs_system }}"
- name: install packages (pip-system)
pip:
name: "{{ pkgs_pip_system }}"
extra_args: "--break-system-packages"