Browse Source

notes on deployable updates

Abram Connelly 6 years ago
parent
commit
52ffcd76e6
1 changed files with 54 additions and 0 deletions
  1. 54 0
      experiment/production/Deploy-Install-Notes.md

+ 54 - 0
experiment/production/Deploy-Install-Notes.md

@@ -0,0 +1,54 @@
+Deploy Install Notes
+===
+
+There is a facility to update the buses deployed in the fleet with updates.
+This is necessary as routes, drivers, etc. change.
+
+As the system changes over to a newer version, there will be some legacy system
+infrastructure to deal with making sure legacy systems aren't updated with new
+code and the new systems aren't running legacy update scripts.
+
+Legacy System Overview
+---
+
+The script `update_loop.sh` looks at the list of package checksums and sends them
+to the server.
+The server responds with updated packages, including the checksum, file size and server side
+location.
+
+If the DIU receives this information, `update_loop.sh` then proceeds to:
+
+* Confirms the reported package is different from the local version
+* Checks to make sure the process hasn't been flagged for being aborted (presence of a drop file)
+* Generates expected information into temporary files
+* `scp` the remote file locally
+* Checks again for an abort drop file
+* Runs `apply_update.sh` with the file, checksum, size, path and package version
+* Cleans up
+
+The `apply_update.sh` script
+
+* Loads `common_values.sh`
+* Confirms checksums are different, aborting install if they are the same
+* Proceeds only if the reported checksum is the same as the actual checksum
+* Extracts the `install.sh` script from the downloaded tar.gz package
+* Runs `install.sh`
+* `fix_pkg_perms.sh` as ssh will start to fail when keys or directories the keys are in
+  don't have proper permissions or if executable bits on binaries aren't set properly
+  will cause other processes to fail.
+
+From what I can tell, the following is noteworthy:
+
+* `install.sh` needs to return a proper value to indicate to `apply_update.sh` it's been successful
+* `/tmp/reboot_flag` file will be touched if the system needs a reboot
+
+Popufare Installation
+---
+
+Here's my suggestion on how to proceed:
+
+* Popufare will ignore the `firmware.tgz` package updates
+* Popufare will only extract config files (paddles, etc.) from the `config.tgz` packages and deposits
+  them in the appropriate place
+* Popufare will use a new package, `popufare_package.tgz`, that checks for a "magic" file (`/home/bus/config/popufare.witness`)
+  and only proceeds if this file is present