securedrop_salt/sd-dom0-files.sls (105 lines of code) (raw):

# -*- coding: utf-8 -*- # vim: set syntax=yaml ts=2 sw=2 sts=2 et : ## # Installs dom0 config scripts specific to tracking updates # over time. These scripts should be ported to an RPM package. ## # Imports "sdvars" for environment config {% from 'securedrop_salt/sd-default-config.sls' import sdvars with context %} dom0-rpm-test-key: file.managed: # We write the pubkey to the repos config location, because the repos # config location is automatically sent to dom0's UpdateVM. Otherwise, # we must place the GPG key inside the fedora TemplateVM, then # restart sys-firewall. - name: /etc/pki/rpm-gpg/RPM-GPG-KEY-securedrop-workstation - source: "salt://securedrop_salt/{{ sdvars.signing_key_filename }}" - user: root - group: root - mode: 644 dom0-rpm-test-key-import: cmd.run: - name: sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-securedrop-workstation - require: - file: dom0-rpm-test-key dom0-workstation-rpm-repo: # We use file.managed rather than pkgrepo.managed, because Qubes dom0 # settings write new repos to /etc/yum.real.repos.d/, but only /etc/yum.repos.d/ # is copied to the UpdateVM for fetching dom0 packages. file.managed: - name: /etc/yum.repos.d/securedrop-workstation-dom0.repo - user: root - group: root - mode: 644 - contents: | [securedrop-workstation-dom0] gpgcheck=1 skip_if_unavailable=False gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-securedrop-workstation enabled=1 baseurl={{ sdvars.dom0_yum_repo_url }} name=SecureDrop Workstation Qubes dom0 repo - require: - file: dom0-rpm-test-key # Ensure debian-12-minimal is present for use as base template dom0-install-debian-minimal-template: cmd.run: - name: > qvm-template info --machine-readable debian-12-minimal | grep -q "installed|debian-12-minimal|" || qvm-template install debian-12-minimal {% set gui_user = salt['cmd.shell']('groupmems -l -g qubes') %} dom0-login-autostart-directory: file.directory: - name: /home/{{ gui_user }}/.config/autostart - user: {{ gui_user }} - group: {{ gui_user }} - mode: 700 - makedirs: True dom0-login-autostart-desktop-file: file.managed: - name: /home/{{ gui_user }}/.config/autostart/press.freedom.SecureDropUpdater.desktop - source: "salt://securedrop_salt/dom0-xfce-desktop-file.j2" - template: jinja - context: desktop_name: SDWLogin desktop_comment: Updates SecureDrop Workstation DispVMs at login desktop_exec: /usr/bin/sdw-login - user: {{ gui_user }} - group: {{ gui_user }} - mode: 664 - require: - file: dom0-login-autostart-directory dom0-securedrop-launcher-desktop-shortcut: file.managed: - name: /home/{{ gui_user }}/Desktop/press.freedom.SecureDropUpdater.desktop - source: "salt://securedrop_salt/press.freedom.SecureDropUpdater.desktop" - user: {{ gui_user }} - group: {{ gui_user }} - mode: 755 {% import_json "securedrop_salt/config.json" as d %} {% if d.environment != "dev" %} # In the dev environment, we've already installed the rpm from # local sources, so don't also pull in from the yum-test repo. dom0-install-securedrop-workstation-dom0-config: pkg.installed: - pkgs: - securedrop-workstation-dom0-config - require: - file: dom0-workstation-rpm-repo {% endif %} dom0-environment-directory: file.directory: - name: /var/lib/securedrop-workstation/ - mode: 755 - makedirs: true dom0-remove-old-environment-flag: file.tidied: - name: /var/lib/securedrop-workstation/ - require: - file: dom0-environment-directory dom0-write-environment-flag: file.managed: - name: /var/lib/securedrop-workstation/{{ d.environment }} - mode: 644 - replace: False - require: - file: dom0-remove-old-environment-flag