aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiulio Fidente <gfidente@redhat.com>2016-04-12 15:28:01 +0200
committerGiulio Fidente <gfidente@redhat.com>2016-06-22 09:49:17 +0000
commitc7a275154ab7d352f3001f4c9824cf4374ae99bd (patch)
tree2c987462e058e0078963fe96ea037c02a68c7ddb
parent3b0555b42da1ca0c6df336cb0dbe708608b83f9d (diff)
Add Ceph profiles
Add Ceph base, monitor, osd and client profiles. Does not add pacemaker specific versions as ceph is not managed by pacemaker. Change-Id: Ie92b25a9c68a76b6d92abedef31e8039b16d9863
-rw-r--r--manifests/profile/base/ceph.pp70
-rw-r--r--manifests/profile/base/ceph/client.pp35
-rw-r--r--manifests/profile/base/ceph/mon.pp48
-rw-r--r--manifests/profile/base/ceph/osd.pp54
4 files changed, 207 insertions, 0 deletions
diff --git a/manifests/profile/base/ceph.pp b/manifests/profile/base/ceph.pp
new file mode 100644
index 0000000..29ca9ae
--- /dev/null
+++ b/manifests/profile/base/ceph.pp
@@ -0,0 +1,70 @@
+# Copyright 2016 Red Hat, 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.
+#
+# == Class: tripleo::profile::base::ceph
+#
+# Ceph base profile for tripleo
+#
+# === Parameters
+#
+# [*ceph_ipv6*]
+# (Optional) Force daemons to bind on IPv6 addresses
+# Defaults to false
+#
+# [*ceph_mon_initial_members*]
+# (Optional) List of IP addresses to use as mon_initial_members
+# Defaults to undef
+#
+# [*ceph_mon_host*]
+# (Optional) List of IP addresses to use as mon_host
+# Deftauls to undef
+#
+# [*ceph_mon_host_v6*]
+# (Optional) List of IPv6 addresses, surrounded by brackets, used as
+# mon_host when ceph_ipv6 is true
+# Defaults to undef
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::ceph (
+ $ceph_ipv6 = false,
+ $ceph_mon_initial_members = undef,
+ $ceph_mon_host = undef,
+ $ceph_mon_host_v6 = undef,
+ $step = hiera('step'),
+) {
+
+ if $step >= 2 {
+ if $ceph_mon_initial_members {
+ $mon_initial_members = downcase($ceph_mon_initial_members)
+ } else {
+ $mon_initial_members = undef
+ }
+ if $ceph_ipv6 {
+ $mon_host = $ceph_mon_host_v6
+ } else {
+ $mon_host = $ceph_mon_host
+ }
+
+ class { '::ceph::profile::params':
+ mon_initial_members => $mon_initial_members,
+ mon_host => $mon_host,
+ }
+
+ include ::ceph::conf
+ }
+}
diff --git a/manifests/profile/base/ceph/client.pp b/manifests/profile/base/ceph/client.pp
new file mode 100644
index 0000000..851324a
--- /dev/null
+++ b/manifests/profile/base/ceph/client.pp
@@ -0,0 +1,35 @@
+# Copyright 2016 Red Hat, 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.
+#
+# == Class: tripleo::profile::base::ceph::client
+#
+# Ceph client profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::ceph::client (
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::ceph
+
+ if $step >= 2 {
+ include ::ceph::profile::client
+ }
+}
diff --git a/manifests/profile/base/ceph/mon.pp b/manifests/profile/base/ceph/mon.pp
new file mode 100644
index 0000000..48c3721
--- /dev/null
+++ b/manifests/profile/base/ceph/mon.pp
@@ -0,0 +1,48 @@
+# Copyright 2016 Red Hat, 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.
+#
+# == Class: tripleo::profile::base::ceph::mon
+#
+# Ceph Monitor profile for tripleo
+#
+# === Parameters
+#
+# [*ceph_pools*]
+# (Optional) List of pools to create
+# Defaults to []
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::ceph::mon (
+ $ceph_pools = [],
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::ceph
+
+ if $step >= 2 {
+ include ::ceph::profile::mon
+ }
+
+ if $step >= 4 {
+ ceph::pool { $ceph_pools :
+ pg_num => hiera('ceph::profile::params::osd_pool_default_pg_num'),
+ pgp_num => hiera('ceph::profile::params::osd_pool_default_pgp_num'),
+ size => hiera('ceph::profile::params::osd_pool_default_size'),
+ }
+ }
+}
diff --git a/manifests/profile/base/ceph/osd.pp b/manifests/profile/base/ceph/osd.pp
new file mode 100644
index 0000000..d0c77e9
--- /dev/null
+++ b/manifests/profile/base/ceph/osd.pp
@@ -0,0 +1,54 @@
+# Copyright 2016 Red Hat, 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.
+#
+# == Class: tripleo::profile::base::ceph::osd
+#
+# Ceph OSD profile for tripleo
+#
+# === Parameters
+#
+# [*ceph_osd_selinux_permissive*]
+# (Optional) Wheter to configure SELinux in permissive mode
+# Default to true
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::ceph::osd (
+ $ceph_osd_selinux_permissive = true,
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::ceph
+
+ if $step >= 2 {
+ if $ceph_osd_selinux_permissive {
+ exec { 'set selinux to permissive on boot':
+ command => "sed -ie 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config",
+ onlyif => "test -f /etc/selinux/config && ! grep '^SELINUX=permissive' /etc/selinux/config",
+ path => ['/usr/bin', '/usr/sbin'],
+ }
+
+ exec { 'set selinux to permissive':
+ command => 'setenforce 0',
+ onlyif => "which setenforce && getenforce | grep -i 'enforcing'",
+ path => ['/usr/bin', '/usr/sbin'],
+ } -> Class['ceph::profile::osd']
+ }
+
+ include ::ceph::profile::osd
+ }
+}