|Graham Helton 1e89fbcba5||7 months ago|
|README.md||8 months ago|
|autodeploy.sh||7 months ago|
AutoDeploy is a tool written in 100% bash that allows for extensible synchronization of configuration files, auto installation of programs your commonly use, and allows for git-like pull/commit. This is intended to be extensible to allow for you to quickly push out a set of configuration files, and have them be pulled into any other machine.
I work on so many different machines that keeping my configuration files and the versions of the software I use in sync between many machines is a painstaking task. Autodeploy should help with the following:
- Easily moving all configuraiton files (
~/.xprofile,etc) between multiple machines
- 100% bash
- Trufflehog-like functionality for configuration files being stored in public places (IE: Github) (Coming soon!)
- Pulling down of files from remote repository
- Pushing of files to a remote repository
- Staging of files defined in
- Distributing config files in
$(hostname)_config/to their correct locations
- Backing up of local configuration files to
~/.config/autodeploy/$(hostname)_config/backup/before overwriting them
- Installing of any application defined in
- Editing configuration files in
.config/autodeploythrough the autodeploy tool
All configuration files are stored in ~/.config/autodeploy/
autodeploy_apps.conf -> The names of applications you wish to install via apt
neovim mupdf curl
autodeploy_config.conf -> Defines variables such as your remote repository, your config folder name, etc. You shouldn't have to edit this unless chaning repos.
autodeploy_files.conf -> Configuration files you would like to carry over to different systems.
It is important that you define files by their relative location to your home directory. For example, if I wanted to add a file to this, I would run
autodeploy -e filesand add a new file with it's path relative to $HOME such as:
.tmux .vimrc .config/i3/config
Command line arguments
Autodeploy is fairly simple to use once you understand the switches. Here is a quick run down of what everything does.
autodeploy -a: Installs applications defined in the
autodeploy_apps.conf file. Currently this only supports apt.
autodeploy -b: Backs the files on your system that will get overwritten by issuing the
autodeploy -c: Collects configuration files defined in
autodeploy_files.conf from around the system and places them in a folder named <your_computer_name>_config.
autodeploy -D: Deletes the configuration files associated with autodeploy (~/.config/autodeploy/).
autodeploy -e <apps|config|files>: Allows you to edit the configuration files from autodeploy. This is functionally the same as running
autodeploy -g: Gets files from the remote repository. This is functionally the same as running
autodeploy -h: Show the help screen.
autodeploy -l: Lists the available configuration files for different systems.
autodeploy -m: Moves the files defined in
autodeploy_files.conf to their correct places in the file system.
autodeploy -p: Push files to remote directory. This takes files in the "staging directory" and pushes them to the remote repository. This is functionally the same as running
autodeploy -u: Moves the files from a different computer's configuration file to the local machine. You can see which configuration files you can choose from by running
Autodeploy relies on having a git repository to store your configuration files. To get started, simply create an empty git repository and autodeploy will ask you where it is the first time you run it.
Note: Please do not store any kind of secrets in a github repository