I suspect some of you have solved this problem in some creative ways, so thought I'd start a discussion about it...
The Raspbian team builds a wonderful Raspbian distro, and I'm guessing some of you are probably like me, and like to have your Pi configured "just so", with all the "right" packages installed and configured as you like them, and your important config files (.bashrc, .vimrc, etc) in their appropriate locations.
What techniques and tools do you employ to build up your "tailored" SD card from an initial distro?
I'm aware of tools like Ansible, etc, but I prefer lightweight solutions that don't add too much overhead, and are easy to configure/manage/update/use.
To start off the discussion, here's my solution, which is based on a set of small home-brew scripts:
1) Build an SD card from Raspbian Lite using an unzip|dd script
2) Mount it and use a little pre-configure script to load my config files, scripts, etc onto the SD card
3) Boot the SD card
4) Using a small set of scripts, apt-get update/upgrade, install additional "big" packages as needed, such as: required (a set of packages I always want), and some others that I may or may not want, depending on the planned use: VNC+X11+etc, Postfix, Apache, Dovecot, etc. Each one of these is a separate script, and I can bang through all of them plus basic install in about 30-40 minutes, depending on how much I pay attention to requests for input.
After a go-around or two, when i'm happy with it, I make a "golden master" SD card image as a jump start shortcut.
Each time I add new functionality new to my "knowledge base", I decide where in my script library it should go. By scripting it I only need to figure out all the nuances and gotchas once, test my script once, and then I'm good to go, at least until the next release of Raspbian comes out
What's your strategy?