Microservices, Miscellaneous

minimesos 0.9.0 - new cli commands, Marathon tokens and Mesos workshop

MiniMesos logo - MiniMesos 0.9.0

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!

Frank - MiniMesos 0.9.0Workshop 2 - MiniMesos 0.9.0Workshop - MiniMesos 0.9.0

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!

Comments
Leave your Comment