replicate.rb 1.57 KB
#
# Author:: Earth U (<sysadmin @ chromedia.com>)
# Cookbook Name:: cfe-mongodb
# Recipe:: replicate
#
# Copyright (C) 2016, Chromedia Far East, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

directory(node[cookbook_name]['install']['priv_dir']) { recursive true }

file node['mongodb3']['config']['mongod']['security']['keyFile'] do
  content   node[cookbook_name]['rs']['key']
  owner     node['mongodb3']['user']
  group     node['mongodb3']['group']
  mode      0400
  sensitive true
  notifies  :restart, 'service[mongod]', :immediately
  notifies  :reboot_now, 'reboot[reboot_before_replication]', :immediately
  only_if   { node[cookbook_name]['rs']['key'] }
end

reboot 'reboot_before_replication' do
  action :nothing
  reason 'Node needs to restart before initiating MongoDB replication'
end

server = "#{node[cookbook_name]['local_ipv4']}"\
         ":#{node['mongodb3']['config']['mongod']['net']['port']}"
if node['cfe-mongodb']['rs']['nodes']['primary'] == server
  include_recipe "#{cookbook_name}::replicate_pri_init"
  include_recipe "#{cookbook_name}::replicate_pri_addnodes"
end