mirror of
https://github.com/genebean/dots.git
synced 2026-03-27 01:17:42 -04:00
86 lines
2.9 KiB
Markdown
86 lines
2.9 KiB
Markdown
# 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](https://rubygems.org/gems/puppet).
|
|
|
|
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
|
|
|
|
```bash
|
|
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/](puppet/production/hieradata/nodes/)
|
|
contains a file matching the hostname of your machine. That file needs to
|
|
contain at least the following:
|
|
|
|
```yaml
|
|
---
|
|
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
|
|
|
|
```bash
|
|
# 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
|