| .bundle | ||
| bin | ||
| copy | ||
| link | ||
| puppet/production | ||
| .gitignore | ||
| .puppet-lint.rc | ||
| .rspec | ||
| .rubocop.yml | ||
| .ruby-version | ||
| .travis.yml | ||
| DevelopmentPlan.md | ||
| Gemfile | ||
| LICENSE | ||
| r10k.yaml | ||
| Rakefile | ||
| README.md | ||
| Vagrantfile | ||
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 livebin/bootstrap: platform specific helpers called bybin/bootstrap.shcopy/: files directly in this directory are copied to all hostscopy/mac/: files in here get copied to Macscopy/nix/: files in here get copied to all Posix systemslink/: files directly in this directory are symlinked on all hosts.- all symlinks are prefixed with a dot. Ex:
link/gemrcbecomes~/.gemrc
- all symlinks are prefixed with a dot. Ex:
link/mac/: files in here get symlinked on all Macslink/nix/: files in here get symlinked on all Posix systemslink/ssh/: these files get symlinked under~/.ssh/on all Posix systemspuppet/: this is basically a control repo modified to suite this setuppuppet/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