Files
toallab-automation/roles/systemli.apt_repositories/tasks/repo.yml

84 lines
1.9 KiB
YAML

---
- name: Clear preset
include_vars: null.yml
- name: Read in preset
include_vars:
file: "{{ item.preset }}.yml"
name: _preset
when: item.preset is defined
# - debug:
# var: _preset
- name: combine preset with given config
set_fact:
_config: "{{ _preset|default({})|combine(item) }}"
# - debug:
# var: _config
- name: ensure we have a repo name 1
set_fact:
_name: "{{ _config.name }}"
when: _config.name is defined and _config.name
- name: ensure we have a repo name 2
set_fact:
_name: "{{ _config.url|urlsplit('hostname') }}"
when: _config.name is undefined or not _config.name
- name: Add key for {{ _name }} by content
apt_key:
data: "{{ _config.key }}"
keyring: /usr/share/keyrings/{{ _name }}.gpg
when: _config.key is defined and _config.key
- import_tasks: key_path.yml
when: _config.key is undefined or not _config.key
- name: Register final keyring stats
stat:
path: /usr/share/keyrings/{{ _name }}.gpg
register: _f
# - debug:
# var: _f
- name: Ensure we have binary key
assert:
that:
- _f.stat.exists
- _f.stat.charset == 'binary'
when: not ansible_check_mode
- name: Add repository {{ _name }}
template:
src: repo.sources.j2
dest: /etc/apt/sources.list.d/{{ _name }}.sources
owner: root
group: root
mode: 0644
when: _config.style is undefined or _config.style == "deb822"
- name: Add repository {{ _name }} in single line style
template:
src: repo.list.j2
dest: /etc/apt/sources.list.d/{{ _name }}.list
owner: root
group: root
mode: 0644
when: _config.style is defined and _config.style == "line"
# apt currently only support meaningful pinning by hostname
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=858406
- name: Add pinning preferences for {{ _name }}
template:
src: pref.j2
dest: /etc/apt/preferences.d/{{ _name }}.pref
owner: root
group: root
mode: 0644