Last week we released minimesos 0.9.0. You can install it using the usual installer command: curl -sSL https://minimesos.org/install | sh
. The Docker images are available on Docker Hub and the jar is available via Jitpack.
Minimesos is the experimentation and testing tool for Apache Mesos and features a Vagrant-like workflow and a Java API. The main highlights of this release are new minimesos ps
and minimesos uninstall
command and IP address tokens for Marathon JSON files.
New cli commands
minimesos ps
The new minimesos ps
command shows what is running on the cluster. It prints the framework, the task name and its state.
$ minimesos ps
marathon weave-scope TASK_RUNNING
minimesos uninstall
Another new command is minimesos uninstall
command that allows you to uninstall a Marathon app or framework.
$ minimesos uninstall weave-scope
Deleted app 'weave scope'
$ minimesos ps
$
$ minimesos install --marathonFile https://raw.githubusercontent.com/ContainerSolutions/minimesos/master/opt/apps/weave-scope.json
$ minimesos ps
marathon weave-scope TASK_RUNNING
IP tokens for Marathon JSON files
Marathon apps often require URLs or IPs of services that are needed. To simplify this process minimesos replaces tokens in Marathon JSON files with IP addresses or URLs. As an example, see this Marathon JSON file for Elasticsearch. It contains the token MINIMESOS_ZOOKEEPER. This token will be replaced by minimesos with the full Zookeeper url based on the IP of the Zookeeper container.
{
"id": "elasticsearch",
"container": {
"docker": {
"image": "mesos/elasticsearch-scheduler:1.0.1",
"network": "BRIDGE"
}
},
"args": [
"--zookeeperMesosUrl", "${MINIMESOS_ZOOKEEPER}",
"--useIpAddress", "true",
"--frameworkUseDocker", "false",
"--elasticsearchNodes", "1"
],
"cpus": 0.2,
"mem": 512.0,
"env": {
"JAVA_OPTS": "-Xms128m -Xmx256m"
},
"instances": 1
}
Note that any environment variable that is printed when running minimesos info
can be used as a token inside a Marathon JSON file.
$ minimesos info
Minimesos cluster is running: 888711247
Mesos version: 0.25
export MINIMESOS_NETWORK_GATEWAY=172.17.0.1
export MINIMESOS_AGENT=http://172.17.0.5:5051; export MINIMESOS_AGENT_IP=172.17.0.5
export MINIMESOS_ZOOKEEPER=zk://172.17.0.3:2181/mesos; export MINIMESOS_ZOOKEEPER_IP=172.17.0.3
export MINIMESOS_MARATHON=http://172.17.0.6:8080; export MINIMESOS_MARATHON_IP=172.17.0.6
export MINIMESOS_CONSUL=http://172.17.0.7:8500; export MINIMESOS_CONSUL_IP=172.17.0.7
export MINIMESOS_MASTER=http://172.17.0.4:5050; export MINIMESOS_MASTER_IP=172.17.0.4
The minimesosFile is now mandatory
Another change we made since 0.9.0 is that the minimesosFile
is mandatory for launching a cluster. In the past you could run minimesos up
and start a default cluster but now you first have to run minimesos init
.
$ minimesos up
minimesos configuration file is not found. Please generate one with 'minimesos init'
We implemented this change because we wanted to be able to system test every configuration option in the minimesosFile
. This was hard to do since most of our system tests used the ClusterArchitecture
class which is separate from the configuration. This change makes our tests nice and compact because every system test is started like this:
@ClassRule
public static final MesosClusterTestRule RULE = MesosClusterTestRule.fromFile("src/test/resources/configFiles/minimesosFile-discoverySystemTest");
public static MesosCluster CLUSTER = RULE.getMesosCluster();
Learning Mesos with minimesos workshop
Just after we released 0.9.0 Viktor and I organized a Software Circus workshop 'Learning Mesos with minimesos' at Container Solutions HQ in Amsterdam. The slide deck and exercises are available at https://github.com/ContainerSolutions/learning-mesos-with-minimesos-workshop. People said they enjoyed the workshop and learned a lot. We also learned and found a few issues and got some ideas on improving minimeos. The weather that day was great so we ended the afternoon with a few beers at the rooftop terrace. Thanks everyone who participated!
Keep in touch
Thanks for reading! Keep in touch by commenting on the blog or talk to us at @minimesos and @ContainerSoluti. Check out the open issues on Github. Do you have an idea on how to improve minimesos? Please open an issue or add a PR at the minimesos Github repo. We hope you find minimesos useful. See you next time!