Code

freckles is written in Python, licensed under the GPLv3.

Main project

All the freckle source code can be found in it’s github repo: https://github.com/makkus/freckles

Dependencies

During the development of freckles, a few code parts were refactored into their own projects, as they could potentially be used for other purposes in the future:

frkl

A library to enable ‘elastic’ configuration.

nsbl

A library that generates Ansible environments, inventories, roles and playbooks out of more minimal, ‘elastic’ configuration.

inaugurate

A project to enable ‘drive-by’ bootstrapping.

freckles ansible roles

Internally, freckles uses several Ansible roles for bootstrap and other purposes. The full list of all the roles that ship with freckles can be viewed here. Here’s a list of the most important ones:

makkus.box-basics

Used for basic bootstrapping tasks.

makkus.freckles

The central role for the freckles command-line application. Used to download a freckle, then parse its metadata and forward that metadata to the appropriate adapter(s).

makkus.install-freckles

An Ansible role that can install freckles (although that functionality is not used by freckles itself, obviously), and, more importantly, update it.

makkus.freckles-config

A role to do some freckles related configuration work, e.g. enable external adapter/role repositories and then check out said adapter/role repositories.

makkus.install-pkg-mgrs

Role that ensures required package managers are installed on the host system.

makkus.install-packages

A (convenience) role that ensures a list of packages is installed on the host system, using the specified package manager for each package.

makkus.install-conda

A role to install the conda package manager.

makkus.install-nix

A role to install the nix package manager

makkus.install-vagrant

A role to install Vagrant, which in the context of freckles is considered also a package manager, as it can install Vagrant plugins.

makkus.dotfiles

The role used by the freckles dotfiles adapter.

makkus.python-dev

The role used by the freckles python-dev adapter.

freckles ansible roles (external)

In addition to custom-written roles, freckles also makes use of some existing roles written by other people:

ansiblebit.oracle-java

To install Oracle Java.

elliotweiser.osx-command-line-tools

To install the commandline-tools package on Mac OS X, also needed for homebrew.

geerlingguy.homebrew

To install homebrew on Mac OS X.