My dot files and a tooling to deploy them to various OS's
Find a file
2017-06-05 08:34:29 -07:00
.bundle Reworked to use Ruby since its needed for Puppet 2017-05-07 09:01:12 -07:00
bin Added an exit option to dots 2017-06-05 08:34:29 -07:00
copy Round 1 of files 2017-05-06 01:10:56 -07:00
link got linking working 2017-06-03 21:51:25 -07:00
puppet/production Lots of updates :) 2017-06-04 23:56:56 -07:00
.gitignore Removing Gemfile.lock so that testing against multiple platforms works 2017-06-04 18:42:17 -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 adjusted required ruby version 2017-06-04 18:51:05 -07:00
DevelopmentPlan.md Lots of updates :) 2017-06-04 23:56:56 -07:00
Gemfile Added conditional for the xmlrpc gem 2017-06-04 18:42:09 -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 Added new README file 2017-06-04 23:55:25 -07:00
Vagrantfile More testing 2017-05-07 16:57:16 -07:00

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

There are primary way to interact with dots is via bundle exec rake dots. This will run an interactive cli program. 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 suite 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