Go to file
2022-09-08 23:34:08 +00:00
functions fix container updates always marked as true 2022-09-08 17:26:23 -06:00
heavy_script.sh add ability to ignore container image updates 2022-09-08 15:02:54 -06:00
LICENSE Initial commit 2022-04-21 21:18:27 +00:00
README.md typo in README 2022-09-08 23:34:08 +00:00

heavy_script

Website

HeavySetup - Further Explanation

Table of contents:


The Menu

image

Access this with bash heavy_script.sh



Update Arguments

Flag Example Parameter Description
-U -U
-U 5
Optional Integer Update applications, ignoring major version changes
Optionally, you can supply a number after the argument to update multiple applications at once
-u -u
-u 5
Optional Integer Update applications, do NOT update if there was a major version change
Optionally, you can supply a number after the argument to update multiple applications at once
-b -b 14 Integer Snapshot ix-applications dataset
Creates backups UP TO the number you've chosen
-i -i nextcloud -i sonarr String Applications listed will be ignored during updating
List one application after another as shown in the example
-r -r Monitors applications after they update
If the app does not become "ACTIVE" after the timeout, rollback the application.
-v -v Verbose Output
Look at the bottom of this page for an example
-S -S Shutdown the application prior to updating it
-t -t 400 Integer Time in seconds that HeavyScript will wait for an application to no longer be deploying before declaring failure
Default: 500
-s -s Sync Catalogs prior to updating
-p -p Prune unused docker images
--ignore-img --ignore-img Ignore container image updates
--self-update --self-update Updates HeavyScript prior to running any other commands

Example

Cron Job

bash heavy_script.sh --self-update -b 10 -i nextcloud -i sonarr -t 600 --ignore-img -rsp -u 5

-b is set to 10. Up to 10 snapshots of your ix-applications dataset will be saved

-i is set to ignore nextcloud and sonarr. These applications will be skipped if they have an update.

-t I set it to 600 seconds, this means the script will wait 600 seconds for the application to become ACTIVE before timing out and rolling back to the previous version since -r is used.

--ignore-img Will not update the application if it is only a container image update

-r Will rollback applications if they fail to deploy within the timeout, after updating.

-s will just sync the repositories, ensuring you are downloading the latest updates.

-p Prune docker images.

-u update applications as long as the major version has absolutely no change, if it does have a change it will ask the user to update manually.

The 5 after the -u means up to 5 applications will be updating and monitored at one time

--self-update Will update the script prior to running anything else.


My Personal Cron Job

bash /mnt/speed/scripts/heavy_script/heavy_script.sh --self-update -b 10 -rsp -u 10


Other Utilities

All of these can ALSO be accessed with the HeavyScript menu, that you can access simply by not providing an argument bash heavy_script.sh

Flag Description
--mount Initiates mounting feature, choose between unmounting and mounting PVC data
--restore Opens a menu to restore a heavy_script backup that was taken on your ix-applications dataset
--delete-backup Opens a menu to delete backups on your system
--dns list all of your applications DNS names and their web ports
--cmd Open a shell for one of your applications

Examples

Mounting PVC Data

bash /mnt/tank/scripts/heavy_script.sh --mount

Restoring ix-applications dataset

bash /mnt/tank/scripts/heavy_script/heavy_script.sh --restore

Deleting Backups

bash /mnt/tank/scripts/heavy_script/heavy_script.sh --delete-backup

List All DNS Names

bash /mnt/tank/scripts/heavy_script/heavy_script.sh --dns

Open a Containers Shell

bash /mnt/speed/scripts/heavy_script/heavy_script.sh --cmd


How to Install

Create a Scripts Dataset

I created a scripts dataset on my Truenas SCALE system, this is where all my scripts will remain.

Open a Terminal

Change Directory to your scripts folder

cd /mnt/speed/scripts

Git Clone Heavy_Script

git clone https://github.com/Heavybullets8/heavy_script.git

Change Directory to Heavy_Script folder

cd heavy_script

From here, you can just run Heavy_Script with bash heavy_script.sh -ARGUMENTS

Note: chmod +x is NOT required. Doing this will break the git pull (or self update) function. Just run the script with bash heavy_script.sh


How to Update

bash heavyscript.sh --self-update -b 10 -supr

The important argument here is the --self-update, you can still use all of your same arguments with this option.

--self-update will place users on the latest tag, as well as showing the changelog when new releases come out. So this is the preferred method. Not using this method, will instead place the user on main, where the changes are tested, but not as rigerously as they are on the releases.


Manually

Open a Terminal

Change Directory to your heavy_script folder

cd /mnt/speed/scripts/heavy_script

git pull

git pull

This is not recommended because the changes to main are not tested as much as the changes that are pushed to releases are tested, think of this method of updating as being in development.



Creating a Cron Job

  1. TrueNAS SCALE GUI
  2. System Settings
  3. Advanced
  4. Cron Jobs
    1. Click Add
Name Value Reason
Description HeavyScript git pull and Update apps This is up to you, put whatever you think is a good description in here
Command bash /PATH/TO/HEAVY_SCRIPT_DIRECTORY/heavy_script.sh --self-update -b 10 -rsp -u 10 This is the command you will be running on your schedule I personally use: bash /mnt/speed/scripts/heavy_script/heavy_script.sh --self-update -b 10 -rsp -u 10
Run As User root Running the script as root is REQUIRED. You cannot access all of the kubernetes functions without this user.
Schedule Up to you, I run mine everyday at 0400 Again up to you
Hide Standard Output False or Unticked I like to receive an email report of how the script ran, what apps updated etc.
Hide Standard Error False or Unticked I want to see any errors that occur
Enabled True or Ticked This will Enable the script to run on your schedule


Additional Information

Verbose vs Non-Verbose

  • Verbose used bash heavy_script.sh -b 5 -Srupv
  • Non-Verbose used bash heavy_script.sh -b 5 -Srup
Verbose Non-Verbose
image image