This repository has been migrated to github.com/m3db/m3. It's contents can be found at github.com/m3db/m3/src/m3em. Follow along there for updates. This repository is marked archived, and will no longer receive any updates.
m3em
(pronounced meme
) is an acronym for M3 Environment Manager. ccm:C* :: m3em:m3db
. Unlike ccm
, m3em
permits remote host operations.
The goal of m3em
is to make it easy to create, manage and destroy services across hosts. It is meant for testing clustered services like m3db and m3aggregator .
There are two primary components in m3em:
(1) API constructs encapsulating placement interactions (see cluster
package), along with remote process orchestration (see node
package).
(2) m3em_agent
: process running on remote hosts. It's responsible for process lifecycle, heartbeating back to the coordinating host.
- For API usage, refer
tools/dtest
in M3DB
$ make m3em_agent
$ scp ./out/m3em_agent <remote-host>:<remote-path>
$ ssh <remote-host>
$ cat >m3em.agent.yaml <<EOF
server:
listenAddress: "0.0.0.0:14541"
debugAddress: "0.0.0.0:24541"
metrics:
sampleRate: 0.02
m3:
hostPort: "127.0.0.1:9052"
service: "m3em"
includeHost: true
env: "development"
agent:
workingDir: /var/m3em-agent
startupCmds:
- path: /bin/echo
args:
- "sample startup command"
releaseCmds:
- path: /bin/echo
args:
- "sample release command"
testEnvVars:
UBER_DATACENTER: sjc1
EOF
$ /remote-path/m3em_agent -f m3em.agent.yaml
This project is released under the Apache License, Version 2.0.