My dot files and a tooling to deploy them to various OS's
Find a file
2017-10-15 10:33:01 -07:00
.bundle Reworked to use Ruby since its needed for Puppet 2017-05-07 09:01:12 -07:00
bin Added support for Linux Mint 2017-10-15 10:22:10 -07:00
copy Removed template section 2017-08-13 19:42:33 -07:00
link Remove duplicate entry 2017-10-15 10:33:01 -07:00
puppet/production Updated vim to fix powerline 2017-10-15 10:33:01 -07:00
.gitignore more exclusions 2017-08-13 23:44:46 -07:00
.puppet-lint.rc Tests work better when a Rakefile is present... 2017-05-07 09:09:25 -07:00
.rspec Tests work better when a Rakefile is present... 2017-05-07 09:09:25 -07:00
.rubocop.yml More testing 2017-05-07 16:57:16 -07:00
.ruby-version Reworked to use Ruby since its needed for Puppet 2017-05-07 09:01:12 -07:00
.travis.yml Trying to get travis notifications working 2017-06-06 18:50:22 -07:00
DevelopmentPlan.md Lots of updates :) 2017-06-04 23:56:56 -07:00
Gemfile Added support for Linux Mint 2017-10-15 10:22:10 -07:00
Gemfile.lock Added support for Linux Mint 2017-10-15 10:22:10 -07:00
LICENSE Initial commit 2017-05-05 22:38:42 -07:00
r10k.yaml Reworked to use Ruby since its needed for Puppet 2017-05-07 09:01:12 -07:00
Rakefile move the "dots" rake tasks to separate file 2017-06-05 08:23:51 -07:00
README.md Fixed typo @thespain found for me 2017-06-06 18:38:11 -07:00
Vagrantfile More testing 2017-05-07 16:57:16 -07:00

Build Status Dependency Status security

dots

My dot files and a tool to deploy them, and the programs that use them, to various OS's. Some additional tools that I consider part of my baseline setup are also installed and, if possible, configured by dots.

Dots is written in ruby and utilizes bundler to keep all its dependancies as self-contained as possible. Installation of programs and management of git repositories is handled by way of the Puppet gem.

Everything about dots assumes you are running it as a normal user, not as root. Strange and unexpected things could well happen if you run any part of it as root or via sudo.

Initial Setup

git clone git@github.com:genebean/dots.git ~/.dotfiles
cd ~/.dotfiles
bin/bootstrap.sh
This script takes care of getting dots ready to use
Enter the number of the task you want to perform:
1) Mac setup
2) EL setup
3) Quit
Task:

After you run the setup for your OS you will want to make sure that puppet/production/hieradata/nodes/ contains a file matching the hostname of your machine. That file needs to contain at least the following:

---
homedir: '/Users/johndoe'

Naturally, you will want to adjust the entry to match the real path to your home directory. On a Mac this is generally in /Users/ or /home/ on Linux.

Running dots

The primary way to interact with dots is via bundle exec rake dots. This will run an interactive cli program like so:

$ bundle exec rake dots
/usr/local/Cellar/ruby/2.4.1_1/bin/ruby bin/dots.rb
It seems you are on macOS 10.12.5
What would you like to do? (Use arrow keys, press Enter to select)
‣ copy
  link
  install

Additional tasks are available in the dots namespace. You can see all the available tasks via bundle exec rake -T.

Notes

Running Puppet

# Any of these will work:
bundle exec rake dots:run_puppet
bundle exec rake dots:run_puppet_noop
bundle exec puppet apply --environmentpath ~/.dotfiles/puppet ~/.dotfiles/puppet/production/manifests/site.pp

Installed Homebrew packages

To see what has been installed (not the deps) run brew leaves

Project structure

  • bin/: this is where the "application" bits live
  • bin/bootstrap: platform specific helpers called by bin/bootstrap.sh
  • copy/: files directly in this directory are copied to all hosts
  • copy/mac/: files in here get copied to Macs
  • copy/nix/: files in here get copied to all Posix systems
  • link/: files directly in this directory are symlinked on all hosts.
    • all symlinks are prefixed with a dot. Ex: link/gemrc becomes ~/.gemrc
  • link/mac/: files in here get symlinked on all Macs
  • link/nix/: files in here get symlinked on all Posix systems
  • link/ssh/: these files get symlinked under ~/.ssh/ on all Posix systems
  • puppet/: this is basically a control repo modified to suit this setup
  • puppet/production/: items from an environment's branch in a control repo
    • this setup assumes Puppet 4 and Hiera 5. Hiera's config is parsed as part of the environment rather than from a global config file.
  • spec/: unit tests go here