YADM (Yet Another Dotfiles Manager) & Keybase

I use multiple Mac workstations to manage all my systems and services (AWS infrastructure, Kubernetes)  so it is a challenge to manage the keys and credentials needed to access those systems. YADM (Yet Another Dotfiles Manager) does a great job of managing this files and storing them in a git repository but I wasn’t comfortable hosting that repository on a public facing service (Github or Gitlab) so I took advantage of Keybase’s private encrypted git repo feature.

Thanks to Rami Al-Ghanmi & Mosab Al-Ghanmi’s presentation at Scale16x for introducing me to YADM (Yet Another Dotfiles Manager).

The Setup

YADM (Yet Another Dotfiles Manager)

> brew install yadm
> yadm init
> yadm add <important file>
> yadm commit 
> yadm remote add origin <url> # See Use Keybase below to avoid public git repos
> yadm push -u origin master

YADM file encryption

YADM has a means to handle sensitive information (SSH keys, AWS credentials)

> vim $HOME/.yadm/encrypt

add list of file locations of sensitive files

 .ssh/*.key
 .ssh/*.pem
 .ssh/*_rsa
 .kube/*
 .aws/*
 .m2/settings.xml

Continue with YADM’s encryption process

> yadm encrypt # set password. This creates a file $HOME/.yadm/files.gpg
> yadm add .yadm/encrypt
> yadm add .yadm/files.gpg
> yadm commit 
> yadm push -u origin master

Now let’s setup our dotfiles on a second machine.

> brew install yadm 
> yadm clone <url>
# The clone command will attempt to merge your existing repository, but if it fails, it will stash any conflicting data. See this question in the FAQ if you need help.
> yadm status

Use Keybase encrypted git repository to safely store your YADM repository

  1. Setup Keybase
  2. Create a private Git repository named ‘dotfiles’ or similar
  3. Continue with setup steps above.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s