mstrap (short for "machine bootstrap") is a tool for provisioning and managing a development environment. It is a convention-over-configuration tool, which aims to leverage existing ecosystem tools to provide a one-command provisioning experience for a new machine.
The approach is inspired by the
chirpstrap tool built at Iora Health,
but is built and maintained in my personal capacity and is not associated with
- Run on a new machine with no development tools installed
- Leverage existing ecosystem tools, when possible
- Avoid vendoring or overriding tool defaults
- Hook into standard scripts-to-rule-them-all
- Currently hooks into a project's
- Eventually: leverage
mrubyfor user-defined extensions written in Ruby, such as environment migrations.
mstrap is wholly centered around proving a no-runtime-dependency (other than
normal system libraries) approach and will always remain a tool designed around
being possible to run immediately after taking a new machine out of its box, and
finishing the OS setup.
Please refer to the documentation site for documentation
- Install dependencies
brew install crystal libevent pcre email@example.com
1. [Install Crystal](https://crystal-lang.org/install/) 2. `sudo apt install libevent-dev libpcre3-dev libreadline-dev libssl-dev patchelf`
git clone firstname.lastname@example.org:maxfierke/mstrap.git
bin/mstrapwill be created
To build multi-arch, you'll need to configure Docker to enable BuildKit-based multi-arch support, and register the proper binfmt handlers to run ARM binaries through QEMU.
On Ubuntu 20.04, this can be done via the following:
$ sudo apt install --no-install-recommends qemu-user-static binfmt-support $ docker run --privileged --rm tonistiigi/binfmt --install arm64,arm $ sudo systemctl restart docker.service
- Fork it (<https://github.com/maxfierke/mstrap/fork>)
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Add some feature')
- Push to the branch (
git push origin my-new-feature)
- Create a new Pull Request
- Max Fierke - creator and maintainer