-
Notifications
You must be signed in to change notification settings - Fork 46
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #172 from freedomofpress/24-automatically-upgrade-vms
Automatically update dom0 and VM configs over time
- Loading branch information
Showing
11 changed files
with
172 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
[flake8] | ||
ignore: W605 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# -*- 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. | ||
## | ||
|
||
|
||
# Copy script to system location so admins can run ad-hoc | ||
dom0-update-securedrop-script: | ||
file.managed: | ||
- name: /usr/bin/securedrop-update | ||
- source: salt://securedrop-update | ||
- user: root | ||
- group: root | ||
- mode: 755 | ||
|
||
# Symlink update script into cron, for single point of update | ||
dom0-update-securedrop-script-cron: | ||
file.symlink: | ||
- name: /etc/cron.daily/securedrop-update-cron | ||
- target: /usr/bin/securedrop-update | ||
|
||
# Create directory for storing SecureDrop-specific icons | ||
dom0-securedrop-icons-directory: | ||
file.directory: | ||
- name: /usr/share/securedrop/icons | ||
- user: root | ||
- group: root | ||
- mode: 755 | ||
- makedirs: True | ||
|
||
# Copy SecureDrop icon for use in GUI feedback. It's also present in | ||
# the Salt directory, but the permissions on that dir don't permit | ||
# normal user reads. | ||
dom0-securedrop-icon: | ||
file.managed: | ||
- name: /usr/share/securedrop/icons/sd-logo.png | ||
- source: salt://sd/sd-journalist/logo-small.png | ||
- user: root | ||
- group: root | ||
- mode: 644 | ||
# Dependency on parent dir should be explicitly declared, | ||
# but the require syntax below was throwing an error that the | ||
# referenced task was "not available". | ||
# require: | ||
# - dom0-securedrop-icons-directory |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# -*- coding: utf-8 -*- | ||
# vim: set syntax=yaml ts=2 sw=2 sts=2 et : | ||
|
||
base: | ||
dom0: | ||
- sd-dom0-files |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# -*- coding: utf-8 -*- | ||
# vim: set syntax=yaml ts=2 sw=2 sts=2 et : | ||
|
||
# "Placeholder" config to trigger TemplateVM boots, | ||
# so upgrades can be applied automatically via cron. | ||
base: | ||
qubes:type:template: | ||
- match: pillar | ||
- topd |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
#!/bin/bash | ||
# Utility for dom- to ensure all updates are regularly installed | ||
set -e | ||
set -u | ||
|
||
# Number of VMs to update in parallel. Default is 4, | ||
# which can be memory-intensive. | ||
SECUREDROP_MAX_CONCURRENCY=2 | ||
|
||
|
||
# Ensure elevated privileges | ||
if [[ "$EUID" -ne 0 ]]; then | ||
echo "Script must be run as root! Exiting..." | ||
exit 1 | ||
fi | ||
|
||
# Display GUI feedback about update process | ||
function securedrop-update-feedback() { | ||
# Unpack msg as arg1 | ||
local msg="$1" | ||
shift | ||
|
||
# Running `notify-send` as root doesn't work, must be normal user. | ||
# Setting 60s expire time (in ms) since it's a long-running cmd. | ||
local qubes_user | ||
qubes_user="$(id -nu 1000)" | ||
su "$qubes_user" -c "notify-send \ | ||
--app-name 'SecureDrop Workstation' \ | ||
--icon /usr/share/securedrop/icons/sd-logo.png \ | ||
--expire-time 60000 \ | ||
'SecureDrop: $msg'" | ||
} | ||
|
||
# `qubesctl pkg.upgrade` will automatically update dom0 packages, as well, | ||
# but we *first* want the freshest RPMs from dom0, *then* we'll want to | ||
# update the VMs themselves. | ||
securedrop-update-feedback "Updating dom0 configuration..." | ||
sudo qubes-dom0-update -y | ||
|
||
securedrop-update-feedback "Updating application..." | ||
qubesctl --skip-dom0 --templates \ | ||
--max-concurrency "$SECUREDROP_MAX_CONCURRENCY" \ | ||
pkg.upgrade refresh=true dist_upgrade=true | ||
|
||
securedrop-update-feedback "Updating VM configuration..." | ||
qubesctl \ | ||
--max-concurrency "$SECUREDROP_MAX_CONCURRENCY" \ | ||
state.highstate | ||
|
||
securedrop-update-feedback \ | ||
"Updates installed. Please reboot the workstation \ | ||
to ensure the latest security fixes are applied." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters