#+TITLE: ansible config
#+AUTHOR: kyle

* wntrmute ansible

  This is my ansible configuration for setting up various machines.

** Assumptions

   The systems that I use with Ansible are virtually all Ubuntu, or at
   least Debian-ish systems. I do have some NixOS machines, but these
   use deep NixOS magic and their configuration is stored in the Elder
   Scrolls that would drive mortals mad to read.

   This is also for interactive systems, e.g. ones that I log into and
   do things. It expects that I will spend time in the shell doing shell
   things.

** Bootstrapping

   Run `./bootstrap.sh`.

** Makefile

   The Makefile has a few targets worth knowing about:

   + check: syntax checking
   + all (default target): Picard this thing (make it so).


** Roles

*** base

    base is the stuff I don't really want to have to live without no
    matter what machine I'm on. It shouldn't expect graphical stuff.

*** desktop

    desktop installs the heavier and GUI things that I'd want on a
    desktop (or realistically, a laptop).

*** development

    This installs a baseline of development tools; it also has
    variables to control what else gets installed:

    + dev_full installs everything
    + dev_virt installs virtualisation stuff, including docker
    + dev_embedded installs various embedded toolchains.

*** dotfiles

    Ye olde dotfiles, managed in Ansible. Was this a mistake? Nothing
    I do is a mistake.

*** heavy

    This is where stuff that takes a while to install goes. It's all
    desktop stuff, so it really only makes sense with the ~desktop~
    role.

*** tailscale

    Almost everything is going to get this; it installs tailscale.
