From f0231d0d9454467ac0c1fc8e5a79a63204425851 Mon Sep 17 00:00:00 2001 From: Emil Renner Berthing Date: Thu, 22 Nov 2018 22:14:39 +0100 Subject: debian: apt: update and manage apt-preferences.d --- roles/debian/defaults/main.yml | 2 ++ roles/debian/tasks/apt.yml | 23 +++++++++++++++++++---- roles/debian/templates/apt-preferences.j2 | 9 +++++++++ 3 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 roles/debian/templates/apt-preferences.j2 (limited to 'roles/debian') diff --git a/roles/debian/defaults/main.yml b/roles/debian/defaults/main.yml index 4ae8a53..91fe3f1 100644 --- a/roles/debian/defaults/main.yml +++ b/roles/debian/defaults/main.yml @@ -16,6 +16,8 @@ logind_conf: {} resolved_conf: {} timesyncd_conf: {} +apt_preferences: {} + apt_repos: base: uri: 'https://deb.debian.org/debian' diff --git a/roles/debian/tasks/apt.yml b/roles/debian/tasks/apt.yml index ff9a960..c9fb0f9 100644 --- a/roles/debian/tasks/apt.yml +++ b/roles/debian/tasks/apt.yml @@ -17,14 +17,30 @@ - name: Remove packages apt: - name: '{{ item }}' + name: "{{ apt_packages|dictsort(true)|selectattr(1,'equalto','absent')|map(attribute=0)|list }}" state: absent autoremove: yes purge: yes - with_items: "{{ apt_packages|dictsort(true)|selectattr(1,'equalto','absent')|map(attribute=0)|list }}" tags: - packages +- name: Create /etc/apt/preferences.d + template: + dest: '/etc/apt/preferences.d/{{ item.key }}' + src: apt-preferences.j2 + owner: root + group: root + mode: 0644 + with_dict: '{{ apt_preferences }}' + when: item.value + +- name: Remove /etc/apt/preferences.d + file: + path: '/etc/apt/preferences.d/{{ item.key }}' + state: absent + with_dict: '{{ apt_preferences }}' + when: not item.value + - name: Configure /etc/apt/sources.list template: dest: '/etc/apt/sources.list' @@ -59,9 +75,8 @@ - name: Install packages apt: - name: '{{ item }}' + name: "{{ apt_packages|dictsort(true)|selectattr(1,'equalto','present')|map(attribute=0)|list }}" state: present - with_items: "{{ apt_packages|dictsort(true)|selectattr(1,'equalto','present')|map(attribute=0)|list }}" tags: - packages diff --git a/roles/debian/templates/apt-preferences.j2 b/roles/debian/templates/apt-preferences.j2 new file mode 100644 index 0000000..f1f4dba --- /dev/null +++ b/roles/debian/templates/apt-preferences.j2 @@ -0,0 +1,9 @@ +{% if 'package' in item.value %} +Package: {{ item.value.package }} +{% endif %} +{% if 'pin' in item.value %} +Pin: {{ item.value.pin }} +{% endif %} +{% if 'pin-priority' in item.value %} +Pin-Priority: {{ item.value['pin-priority'] }} +{% endif %} -- cgit v1.2.1