Есть у нас ansible роль для раскатки агентов безопасности. Под debian13 для скачивания GPG ключа из репозитория использовался ansible модуль
ansible.builtin.get_url. Как оказалось это неверно, ибо он качает в ASCII-armored, а 13 Debian требует бинарный формат GPG keyring. Модуль
ansible.builtin.apt_key по 13 дебиан не работает, кстати. Следовательно при прокатке можно увидеть ошибку вида:<file> ignored as the file has an unsupported filetype.
Пофиксить легко, используем
ansible.builtin.shell:- name: "Add GPG key"
ansible.builtin.shell: |
curl -fsSL "{{ item.key }}" | gpg --dearmor -o "{{ <GPG key path> }}"
chmod 644 "{{ <GPG key path> }}"
args:
creates: "{{ <GPG key path> }}"
loop: "< loop by list >"
Скачивает через curl -> gpg —dearmor -> получаем валидный формат.
Альтернативный и более ansible way вариант перейти на модуль
ansible.builtin.deb822_repository. Проверен с Debian 11, 12, 13.- name: "Add GPG key and repository"
ansible.builtin.deb822_repository:
name: <file_name>
types: deb
uris: "{{ <url> }}"
suites: apt
components: main
signed_by: "{{ url.key }}"
state: present
loop: "{{ <loop> | default ([]) }}"
when:
- ansible_distribution == 'Debian'
Этот модуль создаст source файл и скачает ключ для него.
#ansible
src: @andtree_sec