feat: Remove GPG workarounds

This removes all of the incantations that were necessary to verify the
downloaded archive and relies on the improved GPG modules and
integration into the `archive` module found in 3007.0.
This commit is contained in:
jeanluc
2024-03-05 10:05:18 +01:00
parent 6fd0bbdf3d
commit e93ec99640
2 changed files with 26 additions and 96 deletions

View File

@@ -21,8 +21,6 @@ Gitea package files are absent:
{%- for p in ["conf", "custom", "log"] %} {%- for p in ["conf", "custom", "log"] %}
- {{ gitea.lookup.paths[p] }} - {{ gitea.lookup.paths[p] }}
{%- endfor %} {%- endfor %}
# to make sure this can be installed again (onchanges req in package.installed)
- /tmp/gitea-{{ gitea.version }}
- require: - require:
- sls: {{ sls_config_clean }} - sls: {{ sls_config_clean }}

View File

@@ -22,92 +22,6 @@ Gitea user/group is present:
- system: true - system: true
{%- endif %} {%- endif %}
Requirements for managing Gitea are fulfilled:
pkg.installed:
- pkgs: {{ gitea.lookup.requirements | json }}
# needed to avoid exception when running gpg.get_key in unless below
cmd.run:
- name: gpg --list-keys
- unless:
- test -d "${GNUPG_HOME:-$HOME/.gnupg}"
# the above does not work somehow
- test -d /root/.gnupg
Gitea is available:
file.managed:
- names:
- /tmp/gitea-{{ gitea.version }}:
- source: {{ gitea.lookup.pkg.source.format(version=gitea.version, arch=gitea.lookup.arch) }}
- source_hash: {{ gitea.lookup.pkg.source_hash.format(version=gitea.version, arch=gitea.lookup.arch) }}
- /tmp/gitea-{{ gitea.version }}.asc:
- source: {{ gitea.lookup.pkg.sig.format(version=gitea.version, arch=gitea.lookup.arch) }}
- skip_verify: true
- user: {{ gitea.lookup.user }}
- group: {{ gitea.lookup.group }}
Gitea GPG key is present (received from keyserver):
gpg.present:
- name: {{ gitea.lookup.gpg.key[-16:] }}
- keyserver: {{ gitea.lookup.gpg.keyserver }}
Gitea GPG key is present (fallback):
file.managed:
- name: /tmp/gitea-key.asc
- source: salt://gitea/files/default/key.asc
- onfail:
- Gitea GPG key is present (received from keyserver)
module.run:
- gpg.import_key:
- filename: /tmp/gitea-key.asc
- onfail:
- Gitea GPG key is present (received from keyserver)
- require:
- file: /tmp/gitea-key.asc
{%- if "gpg" not in salt["saltutil.list_extmods"]().get("states", []) %}
# Ensure the following does not run without the key being present.
# The official gpg modules are currently big liars and always report
# `Yup, no worries! Everything is fine.`
Gitea key is actually present:
module.run:
- gpg.get_key:
- fingerprint: {{ gitea.lookup.gpg.key }}
{%- endif %}
{%- if "gpg" not in salt["saltutil.list_extmods"]().get("states", []) %}
Gitea is verified:
test.configurable_test_state:
- name: Check if the downloaded binary has been signed by the release key
- changes: False
- result: >
__slot__:salt:gpg.verify(filename=/tmp/gitea-{{ gitea.version }},
signature=/tmp/gitea-{{ gitea.version }}.asc).res
- require:
- Gitea is available
- Gitea key is actually present
{%- else %}
Gitea is verified:
gpg.verified:
- name: /tmp/gitea-{{ gitea.version }}
- signature: /tmp/gitea-{{ gitea.version }}.asc
- signed_by_any: {{ gitea.lookup.gpg.key }}
- require:
- Gitea is available
- require_any:
- Gitea GPG key is present (received from keyserver)
- Gitea GPG key is present (fallback)
{%- endif %}
Gitea binary is absent if verification failed:
file.absent:
- name: /tmp/gitea-{{ gitea.version }}
- onfail:
- Gitea is verified
Gitea directories are setup: Gitea directories are setup:
file.directory: file.directory:
- names: - names:
@@ -119,22 +33,40 @@ Gitea directories are setup:
- group: {{ gitea.lookup.group }} - group: {{ gitea.lookup.group }}
# This prevents the web-installer from functioning, would need 0770 on /etc/gitea. # This prevents the web-installer from functioning, would need 0770 on /etc/gitea.
- mode: '0750' - mode: '0750'
- require:
- Gitea user/group is present
Requirements for managing Gitea are fulfilled:
pkg.installed:
- pkgs: {{ gitea.lookup.requirements | json }}
Gitea GPG key is present:
gpg.present:
- name: {{ gitea.lookup.gpg.key[-16:] }}
- keyserver: {{ gitea.lookup.gpg.keyserver }}
- source: {{ files_switch(
["key.asc"],
config=gitea,
lookup="Gitea GPG key is present",
)
}}
- require:
- Requirements for managing Gitea are fulfilled
Gitea binary is installed: Gitea binary is installed:
file.copy: file.managed:
- name: {{ gitea.lookup.paths.bin | path_join("gitea") }} - name: {{ gitea.lookup.paths.bin | path_join("gitea") }}
- source: /tmp/gitea-{{ gitea.version }} - source: {{ gitea.lookup.pkg.source.format(version=gitea.version, arch=gitea.lookup.arch) }}
# in case the version changed, overwrite previous binary - source_hash: {{ gitea.lookup.pkg.source_hash.format(version=gitea.version, arch=gitea.lookup.arch) }}
- force: true - signature: {{ gitea.lookup.pkg.sig.format(version=gitea.version, arch=gitea.lookup.arch) }}
- signed_by_any: {{ gitea.lookup.gpg.key | json }}
- makedirs: true - makedirs: true
- user: {{ gitea.lookup.user }} - user: {{ gitea.lookup.user }}
- group: {{ gitea.lookup.group }} - group: {{ gitea.lookup.group }}
- mode: '0755' - mode: '0755'
# only run if a new version was downloaded
- onchanges:
- Gitea is available
- require: - require:
- Gitea is verified - Gitea GPG key is present
- Gitea user/group is present
Gitea service unit is available: Gitea service unit is available:
file.managed: file.managed: