Configuration
mstrap uses a few HCL-based configuration files to define how mstrap works.
~/.mstrap/config.hcldefines a few properties about who you are, any managed profiles, and other settings about how mstrap should operate.~/.mstrap/profile.hcldefines the default profile to be setup bymstrap. Here you can define projects and packages that will be automatically installed and setup bymstrap.
config.hcl
This file is automatically created by mstrap. A basic one will just contain
the details about the user:
e.g.
version = "1.1"
runtimes {
default_manager = "mise" # Experimental, defaults to "asdf" if omitted
}
user {
name = "Max Fierke"
email = "max@example.com"
github = "maxfierke"
}
Using “managed” profiles
By default, mstrap just reads the default local profile configuration defined
by ~/.mstrap/profile.hcl.
In addition to this, you can configure mstrap to use so-called managed
profiles, which can be pulled in from local or remote sources.
At runtime, these profiles are merged together, with later-defined profiles
overwriting any conflicts (e.g. projects with the same cname). The default
local profile will be merged in last.
e.g.
# ~/.mstrap/config.hcl
version = "1.0"
user {
name = "Max Fierke"
email = "max@example.com"
github = "maxfierke"
}
# Might contain a limited profile of things I want to share between my personal
# machine and my work machine
profile "baseline" {
url = "ssh://git@github.com/maxfierke/mstrap-profile-baseline.git"
}
# Might contain some stuff I'm playing around with for the time being or while
# developing a new managed profile
profile "testing" {
# Resolved relative to ~/.mstrap
url = "file://../testing_stuff"
}
# Might be managed by my company, and contains all the projects I need for my work
profile "work" {
url = "ssh://git@workgit.biz/PlaceOfBizness/mstrap-profile-vry-impt-bizness.git"
revision = "SOME_COMMIT_SHA"
}
# Might be a third party who's profile I've vetted, and I'm locking into a specific checksum
# If it changes, I'll need to re-vet and update the checksum to use it.
profile "third-party" {
url = "https://some-yahoos-website.com/profile.hcl"
revision = "sha256:c81cde435453558cb6da7ce4b14f4690636cf76f234364df9265453ccb2002e1"
}
~/.mstrap/profile.hcl will always be loaded by mstrap and should not be
included in the profiles configuration. If you use managed profiles heavily,
you might consider ~/.mstrap/profile.hcl just for local machine use and keep
few things in it.
When I run mstrap, I’ll get the packages, projects, and Docker-managed services
of all profiles.
If you change a profile’s revision (or do not include one), you can run
mstrap update-profiles to fetch the new version. Then, you may run mstrap
to apply those updates.
Security Note: Only use managed profiles that you trust. Managed profiles
have the potential to execute programs via project bootstrapping or packages
installed by the profile. When possible, add revision fields to avoid surprises.