From 9f1729ceeecf6288079b9db4a730b37b6b1c52fa Mon Sep 17 00:00:00 2001 From: nd Date: Sat, 25 May 2019 00:56:46 +0200 Subject: [PATCH] add support to manage repos --- README.md | 40 ++++++++++++++++++++++++++++++++++++++++ handlers/main.yml | 2 ++ tasks/main.yml | 15 ++++++++++++++- tasks/repo.yml | 19 +++++++++++++++++++ 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 README.md create mode 100644 handlers/main.yml create mode 100644 tasks/repo.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..ff641b5 --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +# Packages + +## Supported + +Only Apt and Debian Stretch. + +Other versions might work but are not tested. + +## Parameters and defaults + +packages: + pkg: {} + repos: {} + +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. +pkg: {} + +# dictionary of repositories to setup, the key is used as name for the repository. See **repo** for definition for the content +repos: {} +``` + +**repo**: +``` +# url to repo, example: "http://www.deb-multimedia.org stretch main non-free" +url: '' + +# only set either key or keyid + keyserver + +# gpg key to add for this repo +key: '' + +# key id of the key to add, for example "36A1D7869245C8950F966E92D8576A8BA88D21E9" +keyid: '' + +# key server to get the key from, for example "keyserver.ubuntu.com" +keyserver: +``` diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..d17e5fd --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,2 @@ +- name: update apt cache + apt: update_cache=yes diff --git a/tasks/main.yml b/tasks/main.yml index f04d33e..9ced492 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,11 +1,24 @@ - set_fact: pkgs: "{{ packages.pkg | dict2items | rejectattr('value', 'none') | map(attribute='key') | list }}" +- name: list repositories to setup + debug: + var: packages.repos + verbosity: 1 - name: list packages to install debug: var: pkgs + verbosity: 1 + +- name: install apt-transport-https + apt: pkg=apt-transport-https + +- name: setup repositories + include_tasks: repo.yml + with_items: "{{ packages.repos }}" + +- meta: flush_handlers - name: install packages apt: pkg: "{{ pkgs }}" - update_cache: yes diff --git a/tasks/repo.yml b/tasks/repo.yml new file mode 100644 index 0000000..64946cf --- /dev/null +++ b/tasks/repo.yml @@ -0,0 +1,19 @@ +- set_fact: + repo: "{{ packages.repos[item] }}" + +- name: "setup repo key for {{ item }}" + apt_key: + data: "{{ repo.key }}" + when: repo.key|d(false) + +- name: "setup repo key for {{ item }}" + apt_key: + id: "{{ repo.keyid }}" + keyserver: "{{ repo.keyserver }}" + when: + - repo.keyid|d(false) + - repo.keyserver|d(false) + +- name: "add repo {{ item }}" + apt_repository: + repo: "{{ repo.url }}"