Mesos Cookbook ![Gitter](https://badges.gitter.im/Join Chat.svg)
Install Mesos (http://mesos.apache.org/) and configure mesos master and slave.
This cookbook also supports installation by both bulding from source and with Mesosphere package.
You can switch installation type using the node[:mesos][:type]
attribute (source
or mesosphere
).
Currently only supports ubuntu
and centos
. But centos
support is experimental.
If you would use cgroups
isolator or docker
containerizer, version 14.04 is highly recommended. Note that docker
containerizer is only supported by Mesos 0.20.0+.
You have to specify intallation type (source
or mesosphere
) by setting node[:mesos][:type]
variable.
Currently this cookbook defaults to build mesos from source, i.e.
node[:mesos][:type]
is set to source
.
Install mesos using build_from_source
recipe or mesosphere
recipe, depending
on what the node[:mesos][:type]
attribute is set to (source
or mesosphere
).
Install mesos (download zip from github, configure, make, make install).
Install mesos using Mesosphere's mesos package.
You can also install zookeeper package by node[:mesos][:mesosphere][:with_zookeeper]
if required because Mesosphere's mesos package doesn't include zookeeper. You can also specify mesosphere package's build version (see below for details).
Configure master and cluster deployment configuration files, and start
mesos-master
.
node[:mesos][:prefix]/var/mesos/deploy/masters
node[:mesos][:prefix]/var/mesos/deploy/slaves
node[:mesos][:prefix]/var/mesos/deploy/mesos-deploy-env.sh
node[:mesos][:prefix]/var/mesos/deploy/mesos-master-env.sh
If you choose mesosphere
as node[:mesos][:type]
, the node[:mesos][:prefix]
attribute
will be overridden to /usr/local
, which is because the package from Mesosphere
installs mesos into that directory.
Furthermore, this recipe will also configure upstart configuration files.
/etc/mesos/zk
/etc/defaults/mesos
/etc/defaults/mesos-master
You can configure mesos-master
command line options using the node[:mesos][:master]
attribute.
If you have a configuration as shown below:
node[: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 here for available options or the output of mesos-master --help
.
Configure slave configuration files, and start mesos-slave
.
node[:mesos][:prefix]/var/mesos/deploy/mesos-slave-env.sh
If you choose mesosphere
as node[:mesos][:type]
, the node[:mesos][:prefix]
attribute
will be overridden to /usr/local
, which is because the package from Mesosphere
installs mesos into that directory by default.
Furthermore, this recipe also configures upstart configuration files.
/etc/mesos/zk
/etc/defaults/mesos
/etc/defaults/mesos-slave
You can configure mesos-slave
command line options by node[:mesos][:slave]
hash.
If you have a configuration as shown below:
node[: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 here for available options or the output of mesos-slave --help
.
Install mesos-docker executor. Currently only Mesos 0.14.0 is supported.
NOTE: This cookbook DOES NOT install docker
automatically.
So, you need to install docker manually.
See ./example/mesosphere/Vagrantfile
Please see below:
Key | Type | Description | Default |
---|---|---|---|
[:mesos][:type] | String | installation type(source or mesosphere) | source |
Key | Type | Description | Default |
---|---|---|---|
[:mesos][:version] | String | Version(branch or tag name at http://github.com/apache/mesos). | 0.20.1 |
[:mesos][:prefix] | String | Prefix value to be passed to configure script | /usr/local |
[:mesos][:home] | String | Directory which mesos sources are extracted to(node[:mesos][:home]/mesos). | /opt |
[:mesos][:build][:skip_test] | Boolean | Flag whether test will be performed. | true |
Key | Type | Description | Default |
---|---|---|---|
[:mesos][:version] | String | Version.(see http://mesosphere.io/downloads/) | 0.20.1 |
[:mesos][:mesosphere][:build_version] | String | build version of mesosphere package. mesosphere's package version consists of 2 parts, `-`, for example `0.20.0-1.0.ubuntu1404` | 1.0.ubuntu1404 |
[:mesos][:mesosphere][:with_zookeeper] | String | flag for installing zookeeper package | false |
Key | Type | Description | Default |
---|---|---|---|
[:mesos][:prefix] | String | Prefix value to be passed to configure script. This value will be overridden by /usr/local when you choose mesosphere. | /usr/local |
[:mesos][:ssh_opt] | String | ssh options to be used in mesos-[start|stop]-cluster | -o StrictHostKeyChecking=no -o ConnectTimeout=2 |
[:mesos][:deploy_with_sudo] | String | Flag whether sudo will be used in mesos-[start|stop]-cluster | 1 |
[:mesos][:cluster_name] | String | [OBSOLETE] Human readable name for the cluster, displayed at webui. | MyCluster |
[:mesos][:mater_ips] | Array of String | IP list of masters used in mesos-[start|stop]-cluster | [ ] |
[:mesos][:slave_ips] | Array of String | IP list of slaves used in mesos-[start|stop]-cluster | [ ] |
[:mesos][:master][: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) |
|
[:mesos][:master][:work_dir] | String | [REQUIRED(0.19.1+)] Where to store the persistent information stored in the Registry. | /tmp/mesos |
[: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. | |
[:mesos][:master][:<option_name>] | String | You can set arbitrary command line option for mesos-master. See [here](http://mesos.apache.org/documentation/latest/configuration/) for available options or the output of `mesos-master --help`. |
Key | Type | Description | Default |
---|---|---|---|
[:mesos][:prefix] | String | Prefix value to be passed to configure script. This value will be overridden by /usr/local when you choose mesosphere. | /usr/local |
[:mesos][:slave][:master] | String | [REQUIRED] mesos master url.This should be ip:port for non-ZooKeeper based masters, otherwise a zk:// . when mesosphere, you should set zk:// address. | |
[:mesos][:slave][:<option_name>] | String | You can set arbitrary command line option for mesos-slave. See [here](http://mesos.apache.org/documentation/latest/configuration/) for available options or the output of `mesos-slave --help`. |
There are a couple of test suites
chefspec
for unit tests.test-kitchen
withserverspec
for integration tests (usingvagrant
).
in place, which tests both source and mesosphere installations (as well as master and slave recipes).
- Fork the repository on Github
- Create a named feature branch (like
add_component_x
) - Write you change
- Write tests for your change (if applicable)
- Run the tests, ensuring they all pass
- Submit a Pull Request using Github
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)