Configuration
mstrap
uses a few HCL-based configuration files to define how mstrap
works.
~/.mstrap/config.hcl
defines a few properties about who you are, any managed profiles, and other settings about how mstrap should operate.~/.mstrap/profile.hcl
defines 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.