Mesos Playbook for Ansible
Clone or download
lhoss and ernestas-poskus proper conditional checks (#82)
* proper check of a boolean, handling all cases (like undefined var and --extra-vars mesos_apt_pin_priority=false|true cases)

* fix when check to properly handle --extra-vars mesos_agent_meta_cleanup=false
Latest commit 467d9ab Feb 19, 2018

ansible-mesos - Ansible Playbook for Mesos

Build Status

The ansible-mesos role supports the installation and configuration of a mesos cluster with options for master, slave or a master-slave setup. It supports Ubuntu and RedHat/Centos.

It also allows the setting of specific slave executors so you can run with native docker support.


ansible-galaxy install JasonGiedymin.mesos


Java and Zookeeper


Ansible version at least 1.7

Role Variables

mesos_install_mode: "master" # {master|slave|master-slave}
mesos_version: "1.0.1"

# Debian
mesos_package_version: "2.0.93"
mesos_os_distribution: "{{ ansible_distribution | lower }}"
mesos_os_version: "{{ ansible_distribution_version.split('.') | join('') }}"
mesos_apt_url: "http://{{ mesos_repo_host }}/{{ ansible_distribution | lower }}"
mesos_package_full_version: "{{ mesos_version }}-{{ mesos_package_version }}.{{ mesos_os_distribution }}{{ mesos_os_version }}"
mesos_apt_package: "mesos={{ mesos_package_full_version }}"

# RedHat: EPEL and Mesosphere yum repositories URL
epel_repo: "{{ os_version_major }}/{{ ansible_architecture }}/{{ epel_releases[os_version_major] }}"
mesosphere_yum_repo: "{{ os_version_major }}/noarch/RPMS/{{ mesosphere_releases[os_version_major] }}"

# conf file settings
mesos_cluster_name: "mesos_cluster"
mesos_ip: "{{ ansible_default_ipv4.address }}"
mesos_hostname: "{{ ansible_hostname }}"
mesos_master_port: "5050"
mesos_slave_port: "5051"
mesos_log_location: "/var/log/mesos"
mesos_ulimit: "-n 8192"
mesos_work_dir: "/var/mesos"
mesos_quorum: "1"
zookeeper_client_port: "2181"
zookeeper_hostnames: "{{ mesos_hostname }}:{{ zookeeper_client_port }}"
mesos_zookeeper_masters: "zk://{{ zookeeper_hostnames }}/mesos"
mesos_owner: root
mesos_group: root

# Containerizer
mesos_containerizers: "docker,mesos"
mesos_executor_timeout: "5mins"

mesos_ssl_enabled: false
mesos_ssl_support_downgrade: false
mesos_ssl_key_file: # When SSL is enabled this must be used to point to the SSL key file
mesos_ssl_cert_file: # When SSL is enabled this must be used to point to the SSL certificate file

mesos_option_prefix: "MESOS_"

# Additional configurations
mesos_additional_configs: []
  # For example:
  # - name: FOO
  #   value: bar

# Additional configurations for master
mesos_master_additional_configs: []
  # For example:
  # - name: FOO
  #   value: bar

# Additional configurations for slave
mesos_slave_additional_configs: []
  # For example:
  # - name: FOO
  #   value: bar

Playbook Example

- name: Java + Zookeeper + Mesos [master-slave]
  hosts: all
  sudo: yes
    - role:

    - role: AnsibleShipyard.ansible-zookeeper

    - role: ansible-mesos
      mesos_install_mode: master-slave

Docker is only required on slave nodes and is not installed by default. To use docker with Mesos ensure that docker is installed on slave nodes. You can then set mesos_containerizers: "docker,mesos" for slave nodes.


Apache License


Our related playbooks

  1. ansible-marathon
  2. ansible-chronos
  3. ansible-zookeeper

Author Information

@AnsibleShipyard/developers and others.