The recent update to v2.3.1 of VMware Big Data Extensions required a few updates on the management server to enable the proper deployment of Apache Mesos, Mesosphere Marathon and Docker. In order to have BDE deploy the latest code, the Apache Mesos Chef recipes needed a few updates. I prefer to use the Mesosphere CentOS repo for installing the packages, as it allows for keeping the clusters up-to-date with the proper packages. In order to do so, the following file should be created in /opt/serengeti/www/yum.
mesos.repo
[mesosphere] name=Mesosphere Packages for EL 6 - $basearch baseurl=http://repos.mesosphere.io/el/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://bde.local.domain/yum/RPM-GPG-KEY-mesosphere [mesosphere-noarch] name=Mesosphere Packages for EL 6 - noarch baseurl=http://repos.mesosphere.io/el/6/noarch/ enabled=1 gpgcheck=1 gpgkey=https://bde.local.domain/yum/RPM-GPG-KEY-mesosphere [mesosphere-source] name=Mesosphere Packages for EL 6 - $basearch - Source baseurl=http://repos.mesosphere.io/el/6/SRPMS/ enabled=0 gpgcheck=1 gpgkey=https://bde.local.domain/yum/RPM-GPG-KEY-mesosphere [cloudera-cdh4] name=Cloudera's Distribution for Hadoop, Version 4 baseurl=http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4/ gpgkey = http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera gpgcheck = 1
The file adds an extra repo for Zookeeper that Cloudier provides. These repos were necessary in order for the updated Chef recipes to properly install those packages. The remaining changes are strictly within the Chef recipes on the BDE management server.
/opt/serengeti/chef/cookbooks/mesos/recipes/install.rb
69 when 'rhel', 'centos', 'amazon', 'scientific' 70 %w( unzip libcurl ).each do |pkg| 71 yum_package pkg do 72 action :install 73 end 74 end 75 76 template "/etc/pki/rpm-gpg/RPM-GPG-KEY-mesosphere" do 77 source "RPM-GPG-KEY-mesosphere.erb" 78 end 79 80 package 'mesos' 81 package 'chronos' if node.role?('mesos_chronos') 82 package 'marathon' if node.role?('mesos_marathon') 83 end 100 if distro == 'debian' 101 bash 'reload-configuration-debian' do 102 user 'root' 103 code <<-EOH 104 update-rc.d -f mesos-master remove 105 EOH 106 not_if { ::File.exist? '/usr/sbin/mesos-master' } 107 end 108 else 109 bash 'reload-configuration' do 110 user 'root' 111 code <<-EOH 112 initctl reload-configuration 113 EOH 114 not_if { ::File.exist? '/usr/sbin/mesos-master' } 115 end 116 end
Update:
A colleague pointed out the addition for the RPM-GPG-KEY-mesosphere.erb file was not as clear as it should have been. Make sure you add lines 76-78 AND copy the GPG key into /opt/serengeti/chef/cookbooks/mesos/templates/default with a .erb file extension.
/opt/serengeti/chef/cookbooks/mesos/templates/default/chronos.conf.erb
Several of the template files have an old path for executables that need to be updated. The Chronos configuration file needs the following change.
9 exec /usr/bin/chronos
/opt/serengeti/chef/cookbooks/mesos/templates/default/mesos-slave.conf.erb
6 exec /usr/bin/mesos-init-wrapper slave
/opt/serengeti/chef/cookbooks/mesos/templates/default/marathon.conf.erb
9 exec /usr/bin/marathon
The final step was to update the Chef server so that the changes will take effect by executing the knife cookbook upload -a command. When all of the outlined steps have been completed, the Apache Mesos Chef recipes on the Big Data Extensions management server will be all set to deploy the latest code for Apache Mesos, Mesosphere Marathon, Chronos and Docker on CentOS.
There is a series of posts coming to show how to tie VMware NSX together with Apache Mesos, Apache Hadoop and VMware Big Data Extensions.
Enjoy!