Setup all the things on your workstation with Ansible
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
ansible
scripts
settings
templates/rubber
tests
.gitignore
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
LICENSE
README.md
Vagrantfile
dispansible
rubber

README.md

dispansible Build Status

Setup all the things on your workstation with Ansible.

Warning: this project is currently in alpha state.

"Supported" Platforms

The targeted Operating Systems are currently:

  • Debian / Ubuntu / Linux Mint Linux distributions (mainly based on apt/ppa packaging, but also on Linuxbrew. Currently focused on Ubuntu 14.04 generation.
  • Mac OS X 10.10+ (mainly based on Homebrew and Homebrew Cask packages)

Possible Future Targets

Pending on dispansible community size and interests

  • Arch Linux
  • Korora Linux a nice looking Fedora-based distribution with goals similar to Linux Mint.
  • Redox OS a Unix-like Operating System written in Rust
  • Open/Free/Net BSD

Credits

This project initially began as a fork of https://github.com/spencergibb/ansible-osx, but my approach rapidly diverged from battleschool design. During this alpha/beta development phase, I don't aim at keeping this project merge-compatible with battleschool, but I'm keeping this topic in mind, and would love to discuss it further.

Dependencies

  • Ansible 1.8+
  • The additional module mac_pkg is taken from Spencer Gibb's battleschool
  • Some Ansible core modules are overridden (which implies to use most recent version of Ansible):
    • apt_repository to be able to add PPA repository for LinuxMint
    • command to be able to add an idempotence condition for Vagrant plugins setup

About the name

TL;DR

dispansible aims at brings you more available time for doing amazing things, but of course this tool is not indispensable, as you can always install your software manually. Mmmh, really?

Ethymological Roots

  • dispensible: obsolete adjective, alternative form of dispensable
  • dispensable:
    1. Able to be done without; able to be expended; easily replaced.
    2. Capable of being dispensed; distributable.
    3. ...
  • disposable:
    1. Designed to be disposed of after use
    2. Free for use; available

Design Philosophy

dispansible approach follows the design principles of ansible (software):

  1. Minimal in nature. Manage your software installations should not impose additional dependencies on the environment. See the Dependencies Section above.
  2. Highly reliable. The ansible idempotent resource model is applied to prevent side-effects from re-running scripts.
  3. Low learning curve.

Quoting Mitchell Hashimoto in his Book "Vagrant: Up and Running":

Vagrant lowers development environment setup time, increases development/production parity, and brings the idea of disposable compute resources down to the desktop.

Let's say that dispansible aims at lowers workstation setup time, increases operating systems parity, and brings the idea of disposable computing down to personal computer setup (but please don't get me wrong: don't throw your hardware, too frequently at least).

Setup

WARNING: During alpha phase the configuration file names and locations are unstable and this documentation might not be up to date.

  • Clone via git or Download as tarball this repository (or your own fork)
  • Install Ansible (latest release is usually recommended). You can use one of the bootsrap_<platform> scripts in the scripts directory for that purpose.
  • Optionally update the following configuration files:
    • ansible/galaxy.yml to change the external roles that you are depending on. If you change this file, you most probably will need to modify ansible/playbook.yml as well.
    • settings.yml to customize your software configuration and optionally unselect applications (using the skipped_roles list)
  • Execute ./dispansible all
  • Enjoy a drink (while keeping an eye on your screen, since the sudo password could be prompted during the setup procedure)

Usage

dispansible tool

Install everything that is enabled in settings.yml:

./dispansible all

or

./dispansible

Install specific software:

./dispansible vagrant,virtualbox

rubber tool

upcoming... (including a possible name change)

Similar Projects

  • Boxen (based on Puppet)
  • Kitchenplan (based on Chef)
  • battleschool (also based on Ansible and mainly focused on Mac support)
  • OSXC is a configuration tool for Mac OS X, also based on Ansible
  • The Munki Project is home to several projects that are focused on improving the experience of managing OS X for both the admin and the end user.