From 324fa73bb4e39170404b04c53d5eb98026da9040 Mon Sep 17 00:00:00 2001 From: Emilien Macchi Date: Mon, 30 Dec 2013 11:42:57 +0100 Subject: [PATCH] Ceph: split in classes Signed-off-by: Emilien Macchi --- manifests/rbd.pp | 44 ------------------------------------ manifests/rbd/device.pp | 41 +++++++++++++++++++++++++++++++++ manifests/rbd/monitor.pp | 33 +++++++++++++++++++++++++++ manifests/rbd/osd.pp | 32 ++++++++++++++++++++++++++ manifests/rbd/osd_journal.pp | 42 ++++++++++++++++++++++++++++++++++ 5 files changed, 148 insertions(+), 44 deletions(-) create mode 100644 manifests/rbd/device.pp create mode 100644 manifests/rbd/monitor.pp create mode 100644 manifests/rbd/osd.pp create mode 100644 manifests/rbd/osd_journal.pp diff --git a/manifests/rbd.pp b/manifests/rbd.pp index d42a439a..36fb6d05 100644 --- a/manifests/rbd.pp +++ b/manifests/rbd.pp @@ -26,48 +26,4 @@ class privatecloud::rbd ( public_network => $os_params::ceph_public_network, } - class { 'ceph::apt::ceph': - release => $release - } - -} - -# Monitor node -class role_ceph_mon ( - $id -) { - - class { 'role_ceph': - fsid => $os_params::ceph_fsid, - auth_type => 'cephx', - } - - ceph::mon { $id: - monitor_secret => $os_params::ceph_mon_secret, - mon_port => 6789, - mon_addr => $ipaddress_eth2, - } -} - -define ceph_osd_journal ( - $ceph_osd_device = $name -) { - - $osd_id_fact = "ceph_osd_id_${ceph_osd_device}1" - # NOTE(EmilienM) I've change double quotes to simple qotes, not sure though: - $osd_id = inline_template('<%= scope.lookupvar(osd_id_fact) or 'undefined' %>') - - if $osd_id != 'undefined' { - $osd_data = regsubst($::ceph::conf::osd_data, '\$id', $osd_id) - - file { "${osd_data}/journal": - ensure => link, - target => "/dev/mapper/rootfs-journal--${ceph_osd_device}1", - owner => 'root', - group => 'root', - mode => '0660', - require => Mount[$osd_data], - before => Service["ceph-osd.${osd_id}"] - } - } } diff --git a/manifests/rbd/device.pp b/manifests/rbd/device.pp new file mode 100644 index 00000000..1ca55698 --- /dev/null +++ b/manifests/rbd/device.pp @@ -0,0 +1,41 @@ +# +# Copyright (C) 2013 eNovance SAS +# +# Author: Emilien Macchi +# +# 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. +# + +define privatecloud::rbd::device ( + $ceph_osd_device = $name +) { + + $osd_id_fact = "ceph_osd_id_${ceph_osd_device}1" + # NOTE(EmilienM) I've change double quotes to simple qotes, not sure though: + $osd_id = inline_template('<%= scope.lookupvar(osd_id_fact) or 'undefined' %>') + + if $osd_id != 'undefined' { + $osd_data = regsubst($::ceph::conf::osd_data, '\$id', $osd_id) + + file { "${osd_data}/journal": + ensure => link, + target => "/dev/mapper/rootfs-journal--${ceph_osd_device}1", + owner => 'root', + group => 'root', + mode => '0660', + require => Mount[$osd_data], + before => Service["ceph-osd.${osd_id}"] + } + } + +} diff --git a/manifests/rbd/monitor.pp b/manifests/rbd/monitor.pp new file mode 100644 index 00000000..28f81728 --- /dev/null +++ b/manifests/rbd/monitor.pp @@ -0,0 +1,33 @@ +# +# Copyright (C) 2013 eNovance SAS +# +# Author: Emilien Macchi +# +# 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. +# + +class privatecloud::rbd::monitor ( + $id +) { + + class { 'role_ceph': + fsid => $os_params::ceph_fsid, + auth_type => 'cephx', + } + + ceph::mon { $id: + monitor_secret => $os_params::ceph_mon_secret, + mon_port => 6789, + mon_addr => $ipaddress_eth2, + } +} diff --git a/manifests/rbd/osd.pp b/manifests/rbd/osd.pp new file mode 100644 index 00000000..27160892 --- /dev/null +++ b/manifests/rbd/osd.pp @@ -0,0 +1,32 @@ +# +# Copyright (C) 2013 eNovance SAS +# +# Author: Emilien Macchi +# +# 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. + +class privatecloud::rbd::osd ( + $public_address, + $cluster_address, + $devices +) { + + class { 'ceph::osd' : + public_address => $public_address, + cluster_address => $cluster_address, + } + + privatecloud::rbd::device { $devices: } + privatecloud::rbd::journal { $devices: } + +} diff --git a/manifests/rbd/osd_journal.pp b/manifests/rbd/osd_journal.pp new file mode 100644 index 00000000..598787b7 --- /dev/null +++ b/manifests/rbd/osd_journal.pp @@ -0,0 +1,42 @@ +# +# Copyright (C) 2013 eNovance SAS +# +# Author: Emilien Macchi +# +# 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. +# +# + +define privatecloud::rbd::journal ( + $ceph_osd_device = $name +) { + + $osd_id_fact = "ceph_osd_id_${ceph_osd_device}1" + # NOTE(EmilienM) I've change double quotes to simple qotes, not sure though: + $osd_id = inline_template('<%= scope.lookupvar(osd_id_fact) or 'undefined' %>') + + if $osd_id != 'undefined' { + $osd_data = regsubst($::ceph::conf::osd_data, '\$id', $osd_id) + + file { "${osd_data}/journal": + ensure => link, + target => "/dev/mapper/rootfs-journal--${ceph_osd_device}1", + owner => 'root', + group => 'root', + mode => '0660', + require => Mount[$osd_data], + before => Service["ceph-osd.${osd_id}"] + } + } + +}