Skip to content
This repository has been archived by the owner on Jul 1, 2024. It is now read-only.

evertrue/et_mesos-cookbook

 
 

Repository files navigation

Mesos Cookbook Build Status

Install Mesos (http://mesos.apache.org/) and configure mesos master and slave. This cookbook installs Mesos using Mesosphere packages.

All credit to @everpeace for the basis for this cookbook, everpeace/cookbook-mesos.

Platform

Currently only supports ubuntu and centos. But centos support is experimental.

If you would use cgroups isolator or docker containerizer, Ubuntu 14.04 is highly recommended. Note that docker containerizer is only supported by Mesos 0.20.0+.

Recipes

et_mesos::default

Install Java and Mesos, with platform-dependent switches in place.

et_mesos::package

Install Mesos using Mesosphere's mesos package.

One should use the zookeeper cookbook to provision a well-configured ZooKeeper instance or cluster of instances. There is a caveat to this: the mesos package on Ubuntu installs the zookeeper package, so co-locating Mesos and ZooKeeper using that cookbook is tricky, at best. A separate ZK cluster is encouraged.

et_mesos::master

Configure master and cluster deployment configuration files, and start mesos-master.

  • node['et_mesos']['deploy_dir']/masters
  • node['et_mesos']['deploy_dir']/slaves
  • node['et_mesos']['deploy_dir']/mesos-deploy-env.sh
  • node['et_mesos']['deploy_dir']/mesos-master-env.sh

Furthermore, this recipe will also configure upstart configuration files.

  • /etc/mesos/zk
  • /etc/defaults/mesos
  • /etc/defaults/mesos-master

How to configure mesos-master

You can configure mesos-master command line options using the node['et_mesos']['master'] attribute.

If you have a configuration as shown below:

node['et_mesos']['master'] = {
  port:    "5050",
  log_dir: "/var/log/mesos",
  zk:      "zk://localhost:2181/mesos",
  cluster: "MyCluster",
  quorum:  "1"
}

Then mesos-master will be invoked with command line options like this:

mesos-master --zk=zk://localhost:2181/mesos --port=5050 --log_dir=/var/log/mesos --cluster=MyCluster

See the latest Mesos config docs for available options or the output of mesos-master --help.

et_mesos::slave

Configure slave configuration files, and start mesos-slave.

  • node['et_mesos']['deploy_dir']/mesos-slave-env.sh

Furthermore, this recipe also configures upstart configuration files.

  • /etc/mesos/zk
  • /etc/defaults/mesos
  • /etc/defaults/mesos-slave

How to configure mesos-slave

You can configure mesos-slave command line options by node['et_mesos']['slave'] hash. If you have a configuration as shown below:

node['et_mesos']['slave'] = {
  master:         'zk://localhost:2181/mesos',
  log_dir:        '/var/log/mesos',
  containerizers: 'docker,mesos',
  isolation:      'cgroups/cpu,cgroups/mem',
  work_dir:       '/var/run/work'
}

Then mesos-slave will be invoked with command line options like this:

mesos-slave --master=zk://localhost:2181/mesos --log_dir=/var/log/mesos --containerizers=docker,mesos --isolation=cgroups/cpu,cgroups/mem --work_dir=/var/run/work

See the latest Mesos config docs for available options or the output of mesos-slave --help.

Usage

Wrap this cookbook and include_recipe 'et_mesos::master' or include_recipe 'et_mesos::slave', depending on what part of the cluster you need to provision.

The recommendation would be to have two wrapper cookbooks, one for the master(s), and another for your slave(s).

Attributes

Key Type Description Default
['et_mesos']['version'] String Version(branch or tag name at http://github.com/apache/mesos). 0.22.1
['et_mesos']['ssh_opt'] String ssh options to be used in mesos-[start|stop]-cluster -o StrictHostKeyChecking=no
-o ConnectTimeout=2
['et_mesos']['deploy_with_sudo'] String Flag whether sudo will be used in mesos-[start|stop]-cluster 1
['et_mesos']['cluster_name'] String [OBSOLETE] Human readable name for the cluster, displayed at webui. MyCluster
['et_mesos']['master_ips'] Array of String IP list of masters used in mesos-[start|stop]-cluster [ ]
['et_mesos']['slave_ips'] Array of String IP list of slaves used in mesos-[start|stop]-cluster [ ]
['et_mesos']['zk'] String [REQUIRED(0.19.1+)] ZooKeeper URL (used for leader election amongst masters). May be one of:
zk://host1:port1,host2:port2,…path
zk://username:password@host1:port1,host2:port2,…/path
file://path/to/file (where file contains one of the above)
['et_mesos']['master']['work_dir'] String [REQUIRED(0.19.1+)] Where to store the persistent information stored in the Registry. /tmp/mesos
['et_mesos']['master']['quorum'] String [REQUIRED(0.19.1+)] The size of the quorum of replicas when using “replicated_log” based registry. It is imperative to set this value to be a majority of masters, i.e., quorum > (number of masters) / 2.
['et_mesos']['master']['option_name'] String You can set arbitrary command line option for mesos-master, replace `option_name` with the key for the option to set. See the latest Mesos config docs for available options, or the output of `mesos-master --help`.
['et_mesos']['slave']['master'] String [REQUIRED] mesos master url.This should be a `zk://` style address.
['et_mesos']['slave']['option_name'] String Like ['et_mesos']['master']['option_name'] above, arbitrary options may be specified as a key for a slave by replacing `option_name` with your option’s key.

Testing

There are a couple of test suites in place:

  • chefspec for unit tests.
  • test-kitchen with serverspec for integration tests (using kitchen-ec2).

Contributing

  1. Fork the repository on Github
  2. Create a named feature branch (like add_component_x)
  3. Write you change
  4. Write tests for your change (if applicable)
  5. Run the tests, ensuring they all pass
  6. Submit a Pull Request using Github

License

MIT License. see LICENSE.txt

(Please note that before 2015-02-06-18:00 PST, this project is opened under Apache License, Version 2.0. See also README.md in old version)

Packages

No packages published

Languages

  • Ruby 94.5%
  • HTML 4.4%
  • Shell 1.1%