Historically, I've practiced a form of infrastructure management I like to call "memory-based chaos". However, as I slide through middle age with increasing lack of cognitive grace, it becomes more apparent that I should let my tools work for me. Enter shell scripting and Ansible

The goal

In my ideal world, I'd like to use the following ever-so-elaborate process to set up my daily driver:
  1. Install a clean copy of Ubuntu with minimal tools (including Git)
  2. Pull my repo
  3. Execute local-install.sh
  4. Answer a couple of questions, then wait

Requirements

The initial manifest

  1. Ansible (Used to drive the rest of the system configuration)
  2. Git configuration. Defines local git settings, generates SSH key, pushes said key to Github
  3. System hardening, details TBD
  4. Tor Browser
  5. 1Password
  6. 1Password CLI
  7. Sublime Text
  8. Sublime Merge
  9. Docker and docker-compose
  10. DevToys
  11. Visual Studio Code
  12. Terraform

How's it going so far?

Quite well, actually.

I've got a seemingly decent model for the individual playbooks and associated scripts, with at least a modicum of sanity checking and convenience features.

The Ansible, git config, Tor Browser, and VS Code scripts and playbooks are implemented and seem to work nicely.

Lessons Learned

- My UniFi network needed some help to unblock Tor traffic. Apparently. "dark web" is synonymous with "concern for privacy" in the eyes of Ubiquiti's UX designers.