--- - 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