diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,17 @@
+propellor (5.9.1) unstable; urgency=medium
+
+  * Apt: Debian has changed the name of the suite for testing security updates
+    from testing to testing-security.
+  * Apt: Also the suite for stable releases from bullseye on will be
+    suffixed with "-security".
+  * Apt.update: Pass --allow-releaseinfo-change when updating Unstable
+    or Testing, so that code name changes that happen in those suites
+    during a stable release don't prevent updating the rolling suites.
+  * Systemd.machined: Fix a bug that caused the systemd-container package
+    to not be installed when used with Debian buster.
+
+ -- Joey Hess <id@joeyh.name>  Wed, 17 Jul 2019 15:59:29 -0400
+
 propellor (5.9.0) unstable; urgency=medium
 
   * Added custom type error messages when Properties don't combine due to
diff --git a/config-freebsd.hs b/config-freebsd.hs
--- a/config-freebsd.hs
+++ b/config-freebsd.hs
@@ -59,7 +59,7 @@
 -- A generic webserver in a Docker container.
 webserverContainer :: Docker.Container
 webserverContainer = Docker.container "webserver" (Docker.latestImage "debian") $ props
-	& osDebian' KFreeBSD (Stable "stretch") X86_64
+	& osDebian' KFreeBSD (Stable "buster") X86_64
 	& Apt.stdSourcesList
 	& Docker.publish "80:80"
 	& Docker.volume "/var/www:/var/www"
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,17 @@
+propellor (5.9.1) unstable; urgency=medium
+
+  * Apt: Debian has changed the name of the suite for testing security updates
+    from testing to testing-security.
+  * Apt: Also the suite for stable releases from bullseye on will be
+    suffixed with "-security".
+  * Apt.update: Pass --allow-releaseinfo-change when updating Unstable
+    or Testing, so that code name changes that happen in those suites
+    during a stable release don't prevent updating the rolling suites.
+  * Systemd.machined: Fix a bug that caused the systemd-container package
+    to not be installed when used with Debian buster.
+
+ -- Joey Hess <id@joeyh.name>  Wed, 17 Jul 2019 15:59:29 -0400
+
 propellor (5.9.0) unstable; urgency=medium
 
   * Added custom type error messages when Properties don't combine due to
diff --git a/joeyconfig.hs b/joeyconfig.hs
--- a/joeyconfig.hs
+++ b/joeyconfig.hs
@@ -397,8 +397,9 @@
 	& alias "dist-bugs.kitenet.net"
 	& alias "family.kitenet.net"
 
-	& osDebian (Stable "stretch") X86_64
+	& osDebian (Stable "buster") X86_32
 	& Apt.installed ["linux-image-686-pae"]
+	& Apt.stdSourcesList `onChange` Apt.upgrade
 	& Apt.unattendedUpgrades
 	& Branchable.server hosts
 	& Linode.serialGrub
@@ -409,7 +410,7 @@
 	& ipv4 "139.59.17.168"
 	& Hostname.sane
 	& Hostname.mailname
-	& osDebian (Stable "stretch") X86_64
+	& osDebian (Stable "buster") X86_64
 	& Apt.stdSourcesList `onChange` Apt.upgrade
 	& Apt.unattendedUpgrades
 	& DigitalOcean.distroKernel
@@ -469,7 +470,7 @@
 -- Exhibit: kite's 90's website on port 1994.
 ancientKitenet :: Systemd.Container
 ancientKitenet = Systemd.debContainer "ancient-kitenet" $ props
-	& standardContainer (Stable "stretch")
+	& standardContainer (Stable "buster")
 	& alias hn
 	& Git.cloned (User "root") "git://kitenet-net.branchable.com/" "/var/www/html"
 		(Just "remotes/origin/old-kitenet.net")
@@ -483,7 +484,7 @@
 
 oldusenetShellBox :: Systemd.Container
 oldusenetShellBox = Systemd.debContainer "oldusenet-shellbox" $ props
-	& standardContainer (Stable "stretch")
+	& standardContainer (Stable "buster")
 	& alias "shell.olduse.net"
 	& JoeySites.oldUseNetShellBox
 
@@ -491,6 +492,7 @@
 -- and administrative sanity.
 openidProvider :: Systemd.Container
 openidProvider = Systemd.debContainer "openid-provider" $ props
+	-- simpleid is not in buster
 	& standardContainer (Stable "stretch")
 	& alias hn
 	& OpenId.providerFor [User "joey", User "liw"] hn (Just (Port 8086))
diff --git a/propellor.cabal b/propellor.cabal
--- a/propellor.cabal
+++ b/propellor.cabal
@@ -1,5 +1,5 @@
 Name: propellor
-Version: 5.9.0
+Version: 5.9.1
 Cabal-Version: 1.20
 License: BSD2
 Maintainer: Joey Hess <id@joeyh.name>
diff --git a/src/Propellor/Info.hs b/src/Propellor/Info.hs
--- a/src/Propellor/Info.hs
+++ b/src/Propellor/Info.hs
@@ -91,13 +91,13 @@
 -- It also lets the type checker know that all the properties of the
 -- host must support Debian.
 --
--- >	& osDebian (Stable "stretch") X86_64
+-- >	& osDebian (Stable "buster") X86_64
 osDebian :: DebianSuite -> Architecture -> Property (HasInfo + Debian)
 osDebian = osDebian' Linux
 
 -- Use to specify a different `DebianKernel` than the default `Linux`
 --
--- >	& osDebian' KFreeBSD (Stable "stretch") X86_64
+-- >	& osDebian' KFreeBSD (Stable "buster") X86_64
 osDebian' :: DebianKernel -> DebianSuite -> Architecture -> Property (HasInfo + Debian)
 osDebian' kernel suite arch = tightenTargets $ os (System (Debian kernel suite) arch)
 
diff --git a/src/Propellor/Property/Apt.hs b/src/Propellor/Property/Apt.hs
--- a/src/Propellor/Property/Apt.hs
+++ b/src/Propellor/Property/Apt.hs
@@ -110,9 +110,16 @@
 securityUpdates :: SourcesGenerator
 securityUpdates suite
 	| isStable suite || suite == Testing =
-		let l = "deb http://security.debian.org/ " ++ showSuite suite ++ "/updates " ++ unwords stdSections
+		let l = "deb http://security.debian.org/debian-security " ++ securitysuite ++ " " ++ unwords stdSections
 		in [l, srcLine l]
 	| otherwise = []
+  where
+	securitysuite
+		| suite == Testing = "testing-security"
+		| suite `elem` map Stable releasesusingoldname =
+			showSuite suite ++ "/updates"
+		| otherwise = showSuite suite ++ "-security"
+	releasesusingoldname = ["jessie", "buster", "stretch"]
 
 -- | Makes sources.list have a standard content using the Debian mirror CDN
 -- (or other host specified using the `mirror` property), with the
@@ -207,10 +214,21 @@
 
 -- | Have apt update its lists of packages, but without upgrading anything.
 update :: Property DebianLike
-update = combineProperties ("apt update") $ props
+update = combineProperties desc $ props
 	& pendingConfigured
-	& runApt ["update"]
-		`assume` MadeChange
+	& aptupdate
+  where
+	desc = "apt update"
+	aptupdate :: Property DebianLike
+	aptupdate = withOS desc $ \w o -> case o of
+		(Just (System (Debian _ suite) _))
+			| not (isStable suite) -> ensureProperty w $
+				-- rolling suites' release info can change
+				runApt ["update", "--allow-releaseinfo-change"]
+					`assume` MadeChange
+		_ -> ensureProperty w $ 
+			runApt ["update"]
+				`assume` MadeChange
 
 -- | Have apt upgrade packages, adding new packages and removing old as
 -- necessary. Often used in combination with the `update` property.
diff --git a/src/Propellor/Property/Sbuild.hs b/src/Propellor/Property/Sbuild.hs
--- a/src/Propellor/Property/Sbuild.hs
+++ b/src/Propellor/Property/Sbuild.hs
@@ -21,7 +21,7 @@
 Suggested usage in @config.hs@:
 
 >  mybox = host "mybox.example.com" $ props
->  	& osDebian (Stable "stretch") X86_64
+>  	& osDebian (Stable "buster") X86_64
 >  	& Apt.useLocalCacher
 >  	& sidSchrootBuilt
 >  	& Sbuild.usableBy (User "spwhitton")
diff --git a/src/Propellor/Property/Systemd.hs b/src/Propellor/Property/Systemd.hs
--- a/src/Propellor/Property/Systemd.hs
+++ b/src/Propellor/Property/Systemd.hs
@@ -210,7 +210,7 @@
 		case o of
 			-- Split into separate debian package since systemd 225.
 			(Just (System (Debian _ suite) _))
-				| not (isStable suite) || suite == (Stable "stretch") ->
+				| not (isStable suite) || suite /= (Stable "jessie") ->
 					ensureProperty w $ Apt.installed ["systemd-container"]
 			_ -> noChange
 	assumeinstalled :: Property Linux
diff --git a/src/Propellor/Types/OS.hs b/src/Propellor/Types/OS.hs
--- a/src/Propellor/Types/OS.hs
+++ b/src/Propellor/Types/OS.hs
@@ -59,7 +59,7 @@
 	deriving (Show, Eq)
 
 -- | Debian has several rolling suites, and a number of stable releases,
--- such as Stable "stretch".
+-- such as Stable "buster".
 data DebianSuite = Experimental | Unstable | Testing | Stable Release
 	deriving (Show, Eq)
 
