diff --git a/roles/base/tasks/main.yml b/roles/base/tasks/main.yml
index 93692b7528199c49cc1c42e558c19e90fb2f563e..542b7b0848782c98cec96302d088de02122691e9 100644
--- a/roles/base/tasks/main.yml
+++ b/roles/base/tasks/main.yml
@@ -1,10 +1,5 @@
 ---
 
-- name: Upgrade existing packages
-  apt:
-    update_cache: true
-    upgrade: true
-
 - name: Set hostname
   copy:
     dest: /etc/hostname
diff --git a/site.yml b/site.yml
index 920c4422cf1c1ede61f9bb5957a6e6fdda52545c..b205245de3e8d44d51b4e2b1cf63eb1a71d41b62 100644
--- a/site.yml
+++ b/site.yml
@@ -1,5 +1,18 @@
 ---
 
+# First update packages on all hosts, staggering execution so as to
+# not restart all radiod nodes at once on package upgrades.
+- hosts: all
+  tasks:
+    - name: Upgrade packages
+      apt:
+        update_cache: true
+        upgrade: true
+  serial:
+    - 1
+    - 1
+    - "100%"
+
 - hosts: all
   roles:
     - base