qusal/salt/utils/macros/install-repo.sls
Ben Grande f9ead06408 fix: remove extraneous package repository updates
Updates happens multiple times, normally 2 to 3, even if we consider a
state without includes. On states with multiple includes, it could
easily get approximately 10 updates being ran. This behavior leads to
unnecessary network bandwidth being spent and more time to run the
installation state. When the connection is slow and not using the
cacher, such as torified connections on Whonix, the installation can
occurs much faster.

Adding external repositories has to be done prior to update to ensure it
is also fetched.

Fixes: https://github.com/ben-grande/qusal/issues/29
2024-03-18 17:51:36 +01:00

85 lines
2.2 KiB
Plaintext

{#
SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
SPDX-License-Identifier: AGPL-3.0-or-later
#}
{#
Install repositories with ease.
Usage:
1: Import this template:
{% from 'utils/macros/install-repo.sls' import install_repo -%}
2: Set template to clone from and the clone name:
{{ install_repo(sls_path, 'chrome') }}
If sls_path is 'browser', then this would install the repo from:
Source directory:
salt://browser/files/repo/
Debian:
chrome.sources -> /etc/apt/sources.list.d/chrome.sources
chrome.asc -> /usr/share/keyrings/chrome.asc
Fedora:
chrome.yum.repo -> /etc/yum.repos.d/chrome.repo
chrome.yum.asc -> /etc/pki/rpm-gpg/RPM-GPG-KEY-chrome
#}
{% macro install_repo(name, repo) -%}
{% if grains['os_family']|lower == 'debian' -%}
"{{ name }}-install-{{ repo }}-keyring":
file.managed:
- name: /usr/share/keyrings/{{ repo }}.asc
- source: salt://{{ name }}/files/repo/{{ repo }}.asc
- mode: '0644'
- user: root
- group: root
- makedirs: True
"{{ name }}-remove-{{ repo }}-old-format":
file.absent:
- require:
- file: "{{ name }}-install-{{ repo }}-keyring"
- name: /etc/apt/sources.list.d/{{ repo }}.list
"{{ name }}-install-{{ repo }}-repository":
file.managed:
- require:
- file: "{{ name }}-install-{{ repo }}-keyring"
- file: "{{ name }}-remove-{{ repo }}-old-format"
- name: /etc/apt/sources.list.d/{{ repo }}.sources
- source: salt://{{ name }}/files/repo/{{ repo }}.sources
- mode: '0644'
- user: root
- group: root
- makedirs: True
{% elif grains['os_family']|lower == 'redhat' -%}
"{{ name }}-install-{{ repo }}-keyring":
file.managed:
- name: /etc/pki/rpm-gpg/RPM-GPG-KEY-{{ repo }}
- source: salt://{{ name }}/files/repo/{{ repo }}.yum.asc
- mode: '0644'
- user: root
- group: root
- makedirs: True
"{{ name }}-install-{{ repo }}-repository":
file.managed:
- require:
- file: "{{ name }}-install-{{ repo }}-keyring"
- name: /etc/yum.repos.d/{{ repo }}.repo
- source: salt://{{ name }}/files/repo/{{ repo }}.yum.repo
- mode: '0644'
- user: root
- group: root
- makedirs: True
{% endif -%}
{% endmacro -%}