securedrop_salt/fpf-apt-repo.sls (62 lines of code) (raw):
# -*- coding: utf-8 -*-
# vim: set syntax=yaml ts=2 sw=2 sts=2 et :
#
# Don't start with the Qubes-maintained Salt logic for upgrading VM packages:
#
# dom0:/srv/formulas/base/update-formula/update/qubes-vm.sls
#
# We want to make sure that certain maintenance tasks like cleaning out
# old packages and updating apt lists are handled first, otherwise
# the subsequent tasks will fail. For reference
# include:
# - update.qubes-vm
# - securedrop_salt.sd-default-config
# Imports "sdvars" for environment config
{% from 'securedrop_salt/sd-default-config.sls' import sdvars with context %}
# Using apt-get requires manual approval when releaseinfo changes,
# just get it over with in the beginning
update-apt-cache-with-stable-change:
cmd.run:
- name: apt-get update --allow-releaseinfo-change
autoremove-old-packages:
cmd.run:
- name: apt-get autoremove -y
- require:
- cmd: update-apt-cache-with-stable-change
# If we're on a prod environment, ensure there isn't a test .sources
# file. (Should never happen in real usage, but may in testing)
{% import_json "securedrop_salt/config.json" as d %}
{% if d.environment == "prod" %}
clean-old-test-sources:
file.absent:
- name: "/etc/apt/sources.list.d/apt-test_freedom_press.sources"
{% endif %}
# Install the relevant .sources file based on our environment.
configure-fpf-apt-repo:
file.managed:
- name: "/etc/apt/sources.list.d/{{ sdvars.apt_sources_filename }}"
- source: "salt://securedrop_salt/{{ sdvars.apt_sources_filename }}.j2"
- template: jinja
- context:
codename: {{ grains['oscodename'] }}
component: {{ sdvars.component }}
- require:
- cmd: autoremove-old-packages
{% if d.environment == "prod" %}
- file: clean-old-test-sources
{% endif %}
upgrade-all-packages:
pkg.uptodate:
# Update apt lists again, since they were updated before FPF repo was added.
- refresh: True
- dist_upgrade: True
- require:
- file: configure-fpf-apt-repo
- cmd: update-apt-cache-with-stable-change
# Install production keyring package, which will overwrite prod .sources file
install-securedrop-keyring-package:
pkg.installed:
- pkgs:
- securedrop-keyring
- require:
- file: configure-fpf-apt-repo