diff --git a/group_vars/debian.yml b/group_vars/debian.yml index 2feb4f1..3daeefd 100644 --- a/group_vars/debian.yml +++ b/group_vars/debian.yml @@ -2,3 +2,5 @@ glob_apt: mirror: "http://mirror.crans.org/" extra_repositories: [] + pin: + bullseye: [] diff --git a/roles/apt/tasks/main.yml b/roles/apt/tasks/main.yml index 656b865..6f56078 100644 --- a/roles/apt/tasks/main.yml +++ b/roles/apt/tasks/main.yml @@ -25,3 +25,14 @@ group: root mode: 0644 loop: "{{ apt.extra_repositories }}" + +- name: Configure pin from future distributions + template: + src: "apt/{{ item[0] }}.d/pin.list.j2" + dest: "/etc/apt/{{ item[0] }}.d/{{ item[1].key }}.list" + owner: root + group: root + mode: 0644 + with_nested: + - ["sources.list", "preferences"] + - "{{ apt.pin|dict2items }}" diff --git a/roles/apt/templates/apt/preferences.d/pin.list.j2 b/roles/apt/templates/apt/preferences.d/pin.list.j2 new file mode 100644 index 0000000..11e6fb0 --- /dev/null +++ b/roles/apt/templates/apt/preferences.d/pin.list.j2 @@ -0,0 +1,12 @@ +{{ ansible_header | comment }} + + +Package: * +Pin: release n={{ item[1].key }} +Pin-Priority: 1 +{% for package in item[1].value -%} + +Package: {{ package }} +Pin: release n={{ item[1].key }} +Pin-Priority: 900 +{% endfor -%} diff --git a/roles/apt/templates/apt/sources.list.d/pin.list.j2 b/roles/apt/templates/apt/sources.list.d/pin.list.j2 new file mode 100644 index 0000000..4f9ef9b --- /dev/null +++ b/roles/apt/templates/apt/sources.list.d/pin.list.j2 @@ -0,0 +1,3 @@ +{{ ansible_header | comment }} + +deb {{ apt.mirror }}debian {{ item[1].key }} main contrib non-free