| > Checklists are much, much easier to adapt. They can also hold more information than progress indication, like important outputs of the procedure that need to be used somewhere else later, etc. echo "## Step 2/10 : preparing the SSH key for xxx" (...) KEY=$( cat .ssh/id_rsa.pub ) echo "## Do not forget to use this important output somewhere else later: $KEY" > They can be archived in case I need to understand how I did it on that particular occasion one year ago. (...) # 20191102 # TODO: 2 years ago, we decide to use 4096 bits key, make sure to check the length # in case I forget, how to do that, the number of bits can be forced with -b 4096 # 20201102 # WONTFIX: use ecdsa for the specific host yyyy So I stand with the author: this is the absolute best solution there is: it can be as simple or as thorough as you need, while being very low tech and simple to use. And when you find yourself needing to make say an Ansible configuration, you already have most of what you need. |
An aborted script has a good chance of having left things in a broken, half-constructed state, such that simply re-executing the script results in more errors. Attempting to manually resume the script midway will have likely discarded important env variables that I must now figure out how to reconstruct.
...which isn't to say the scripting approach doesn't have value - poor checklist discipline by my coworkers has led me to painstakingly automate more than one perfectly fine checklist, and some stuff is quite scripting friendly - but I've also written my share of scripts that ate up more time in debugging and troubleshooting than I ever saved by writing them in the first place.