244 lines
9.0 KiB
Puppet
244 lines
9.0 KiB
Puppet
# Copyright (C) 2013, 2014 iWeb Technologies Inc.
|
|
# Copyright (C) 2013 Cloudwatt <libre.licensing@cloudwatt.com>
|
|
# Copyright (C) 2014 Nine Internet Solutions AG
|
|
# Copyright (C) 2014 Catalyst IT Limited
|
|
# Copyright (C) 2015 Red Hat
|
|
#
|
|
# 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.
|
|
#
|
|
# Author: Loic Dachary <loic@dachary.org>
|
|
# Author: Francois Charlier <francois.charlier@enovance.com>
|
|
# Author: David Moreau Simard <dmsimard@iweb.com>
|
|
# Author: Andrew Woodward <awoodward@mirantis.com>
|
|
# Author: David Gurtner <aldavud@crimson.ch>
|
|
# Author: Ricardo Rocha <ricardo@catalyst.net.nz>
|
|
# Author: Emilien Macchi <emilien@redhat.com>
|
|
#
|
|
# == Class: ceph::repo
|
|
#
|
|
# Configure ceph APT repo for Ceph
|
|
#
|
|
# === Parameters:
|
|
#
|
|
# [*ensure*] The ensure state for package ressources.
|
|
# Optional. Defaults to 'present'.
|
|
#
|
|
# [*release*] The name of the Ceph release to install
|
|
# Optional. Default to 'mimic' in ceph::params.
|
|
#
|
|
# [*fastcgi*] Install Ceph fastcgi apache module for Ceph
|
|
# Optional. Defaults to 'false'
|
|
#
|
|
# [*proxy*] Proxy URL to be used for the yum repository, useful if you're behind a corporate firewall
|
|
# Optional. Defaults to 'undef'
|
|
#
|
|
# [*proxy_username*] The username to be used for the proxy if one should be required
|
|
# Optional. Defaults to 'undef'
|
|
#
|
|
# [*proxy_password*] The password to be used for the proxy if one should be required
|
|
# Optional. Defaults to 'undef'
|
|
#
|
|
# [*enable_epel*] Whether or not enable EPEL repository.
|
|
# Optional. Defaults to True
|
|
#
|
|
# [*enable_sig*] Whether or not enable SIG repository.
|
|
# CentOS SIG repository contains Ceph packages built by CentOS community.
|
|
# https://wiki.centos.org/SpecialInterestGroup/Storage/
|
|
# Optional. Defaults to False in ceph::params.
|
|
#
|
|
# [*ceph_mirror*] Ceph mirror used to download packages.
|
|
# Optional. Defaults to undef.
|
|
#
|
|
class ceph::repo (
|
|
$ensure = present,
|
|
$release = $::ceph::params::release,
|
|
$fastcgi = false,
|
|
$proxy = undef,
|
|
$proxy_username = undef,
|
|
$proxy_password = undef,
|
|
$enable_epel = true,
|
|
$enable_sig = $::ceph::params::enable_sig,
|
|
$ceph_mirror = undef,
|
|
) inherits ceph::params {
|
|
case $::osfamily {
|
|
'Debian': {
|
|
include ::apt
|
|
|
|
if $ceph_mirror {
|
|
$ceph_mirror_real = $ceph_mirror
|
|
} else {
|
|
$ceph_mirror_real = "http://download.ceph.com/debian-${release}/"
|
|
apt::key { 'ceph':
|
|
ensure => $ensure,
|
|
id => '08B73419AC32B4E966C1A330E84AC2C0460F3994',
|
|
source => 'https://download.ceph.com/keys/release.asc',
|
|
before => Apt::Source['ceph'],
|
|
}
|
|
}
|
|
|
|
apt::source { 'ceph':
|
|
ensure => $ensure,
|
|
location => $ceph_mirror_real,
|
|
release => $::lsbdistcodename,
|
|
tag => 'ceph',
|
|
}
|
|
|
|
if $fastcgi {
|
|
|
|
apt::key { 'ceph-gitbuilder':
|
|
ensure => $ensure,
|
|
id => 'FCC5CB2ED8E6F6FB79D5B3316EAEAE2203C3951A',
|
|
server => 'keyserver.ubuntu.com',
|
|
}
|
|
|
|
apt::source { 'ceph-fastcgi':
|
|
ensure => $ensure,
|
|
location => "http://gitbuilder.ceph.com/libapache-mod-fastcgi-deb-${::lsbdistcodename}-${::hardwaremodel}-basic/ref/master",
|
|
release => $::lsbdistcodename,
|
|
require => Apt::Key['ceph-gitbuilder'],
|
|
}
|
|
|
|
}
|
|
|
|
Apt::Source<| tag == 'ceph' |> -> Package<| tag == 'ceph' |>
|
|
Exec['apt_update'] -> Package<| tag == 'ceph' |>
|
|
}
|
|
|
|
'RedHat': {
|
|
$enabled = $ensure ? { 'present' => '1', 'absent' => '0', default => absent, }
|
|
|
|
# If you want to deploy Ceph using packages provided by CentOS SIG
|
|
# https://wiki.centos.org/SpecialInterestGroup/Storage/
|
|
if $enable_sig {
|
|
if $::operatingsystem != 'CentOS' {
|
|
warning("CentOS SIG repository is only supported on CentOS operating system, \
|
|
not on ${::operatingsystem}, which can lead to packaging issues.")
|
|
}
|
|
if $ceph_mirror {
|
|
$ceph_mirror_real = $ceph_mirror
|
|
} else {
|
|
$ceph_mirror_real = "https://buildlogs.centos.org/centos/7/storage/x86_64/ceph-${release}/"
|
|
}
|
|
yumrepo { 'ceph-luminous-sig':
|
|
ensure => 'absent',
|
|
}
|
|
yumrepo { 'ceph-storage-sig':
|
|
enabled => '1',
|
|
baseurl => $ceph_mirror_real,
|
|
descr => 'Ceph Storage SIG',
|
|
mirrorlist => 'absent',
|
|
gpgcheck => '0',
|
|
}
|
|
# Make sure we install the repo before any Package resource
|
|
Yumrepo['ceph-luminous-sig'] -> Yumrepo['ceph-storage-sig'] -> Package<| tag == 'ceph' |>
|
|
} else {
|
|
# If you want to deploy Ceph using packages provided by ceph.com repositories.
|
|
if ((($::operatingsystem == 'RedHat' or $::operatingsystem == 'CentOS') and (versioncmp($::operatingsystemmajrelease, '7') < 0))
|
|
or ($::operatingsystem == 'Fedora' and (versioncmp($::operatingsystemmajrelease, '19') < 0))) {
|
|
$el = '6'
|
|
} else {
|
|
$el = '7'
|
|
}
|
|
|
|
# Firefly is the last ceph.com supported release which conflicts with
|
|
# the CentOS 7 base channel. Therefore make sure to only exclude the
|
|
# conflicting packages in the exact combination of CentOS7 and Firefly.
|
|
# TODO: Remove this once Firefly becomes EOL
|
|
if ($::operatingsystem == 'CentOS' and $el == '7' and $release == 'firefly') {
|
|
file_line { 'exclude base':
|
|
ensure => $ensure,
|
|
path => '/etc/yum.repos.d/CentOS-Base.repo',
|
|
after => '^\[base\]$',
|
|
line => 'exclude=python-ceph-compat python-rbd python-rados python-cephfs',
|
|
} -> Package<| tag == 'ceph' |>
|
|
}
|
|
|
|
Yumrepo {
|
|
proxy => $proxy,
|
|
proxy_username => $proxy_username,
|
|
proxy_password => $proxy_password,
|
|
}
|
|
|
|
|
|
yumrepo { 'ext-ceph':
|
|
# puppet versions prior to 3.5 do not support ensure, use enabled instead
|
|
enabled => $enabled,
|
|
descr => "External Ceph ${release}",
|
|
name => "ext-ceph-${release}",
|
|
baseurl => "http://download.ceph.com/rpm-${release}/el${el}/\$basearch",
|
|
gpgcheck => '1',
|
|
gpgkey => 'https://download.ceph.com/keys/release.asc',
|
|
mirrorlist => absent,
|
|
priority => '10', # prefer ceph repos over EPEL
|
|
tag => 'ceph',
|
|
}
|
|
|
|
yumrepo { 'ext-ceph-noarch':
|
|
# puppet versions prior to 3.5 do not support ensure, use enabled instead
|
|
enabled => $enabled,
|
|
descr => 'External Ceph noarch',
|
|
name => "ext-ceph-${release}-noarch",
|
|
baseurl => "http://download.ceph.com/rpm-${release}/el${el}/noarch",
|
|
gpgcheck => '1',
|
|
gpgkey => 'https://download.ceph.com/keys/release.asc',
|
|
mirrorlist => absent,
|
|
priority => '10', # prefer ceph repos over EPEL
|
|
tag => 'ceph',
|
|
}
|
|
|
|
if $fastcgi {
|
|
yumrepo { 'ext-ceph-fastcgi':
|
|
enabled => $enabled,
|
|
descr => 'FastCGI basearch packages for Ceph',
|
|
name => 'ext-ceph-fastcgi',
|
|
baseurl => "http://gitbuilder.ceph.com/mod_fastcgi-rpm-rhel${el}-x86_64-basic/ref/master",
|
|
gpgcheck => '1',
|
|
gpgkey => 'https://download.ceph.com/keys/autobuild.asc',
|
|
mirrorlist => absent,
|
|
priority => '20', # prefer ceph repos over EPEL
|
|
tag => 'ceph',
|
|
}
|
|
}
|
|
|
|
# prefer ceph.com repos over EPEL
|
|
package { 'yum-plugin-priorities':
|
|
ensure => present,
|
|
}
|
|
}
|
|
|
|
if $enable_epel and ($::operatingsystem != 'Fedora') {
|
|
yumrepo { "ext-epel-${el}":
|
|
# puppet versions prior to 3.5 do not support ensure, use enabled instead
|
|
enabled => $enabled,
|
|
descr => "External EPEL ${el}",
|
|
name => "ext-epel-${el}",
|
|
baseurl => absent,
|
|
gpgcheck => '1',
|
|
gpgkey => "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-${el}",
|
|
mirrorlist => "http://mirrors.fedoraproject.org/metalink?repo=epel-${el}&arch=\$basearch",
|
|
priority => '20', # prefer ceph repos over EPEL
|
|
tag => 'ceph',
|
|
exclude => 'python-ceph-compat python-rbd python-rados python-cephfs',
|
|
}
|
|
}
|
|
|
|
Yumrepo<| tag == 'ceph' |> -> Package<| tag == 'ceph' |>
|
|
}
|
|
|
|
default: {
|
|
fail("Unsupported osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}, \
|
|
module ${module_name} only supports osfamily Debian and RedHat")
|
|
}
|
|
}
|
|
}
|