puppet-openafs/manifests/client.pp

161 lines
3.5 KiB
Puppet

# Class: openafs::client
class openafs::client (
$cell,
$realm,
$admin_server = [$::fdqn],
$cache_size = 500000,
$kdcs = [$::fqdn],
) {
include ::ntp
class { '::kerberos::client':
realm => $realm,
kdcs => $kdcs,
admin_server => $admin_server,
}
$packages = [
'openafs-client',
'openafs-krb5',
'kstart',
]
package { $packages:
ensure => present,
}
if ($::osfamily == 'RedHat') {
# There is no official release of AFS for RHEL/CentOS7 at this
# stage. We are pointing this to RPMs we have build in a job at
# tarballs.openstack.org, and we only build for 7 ATM
# TODO: fedora
if versioncmp($::operatingsystemmajrelease, '7') != 0 {
fail('We only support Centos7 builds at this time')
}
$openafs_path = '/usr/vice/etc'
if ! defined(Package['kernel-devel']) {
package { 'kernel-devel':
ensure => present,
before => [
Package['openafs-client'],
Package['openafs-krb5'],
],
}
}
if ! defined(Package['dkms']) {
package { 'dkms':
ensure => present,
before => [
Package['openafs-client'],
Package['openafs-krb5'],
],
}
}
if ! defined(Package['gcc']) {
package { 'gcc':
ensure => present,
before => [
Package['openafs-client'],
Package['openafs-krb5'],
],
}
}
$openafs_dkms = 'dkms-openafs'
package { $openafs_dkms:
ensure => present,
require => [
Package['kernel-devel'],
Package['gcc'],
Package['dkms'],
],
before => [
Package['openafs-client'],
Package['openafs-krb5'],
],
}
file { '/etc/yum.repos.d/openafs.repo':
ensure => present,
replace => true,
source => 'puppet:///modules/openafs/openafs.repo',
before => [
Package['openafs-client'],
Package['openafs-krb5'],
],
}
file { '/var/cache/openafs':
ensure => directory,
}
} else {
$openafs_path = '/etc/openafs'
$dkms_packages = [
'linux-headers-generic',
]
$openafs_dkms = 'openafs-modules-dkms'
package { $dkms_packages:
ensure => present,
before => [
Package['openafs-client'],
Package['openafs-krb5'],
Package[$openafs_dkms],
],
}
package { $openafs_dkms:
ensure => present,
before => [
Package['openafs-client'],
Package['openafs-krb5'],
],
}
}
file { "${openafs_path}/afs.conf.client":
ensure => present,
replace => true,
source => 'puppet:///modules/openafs/afs.conf.client',
require => Package['openafs-client'],
}
file { "${openafs_path}/CellServDB":
ensure => present,
replace => true,
source => 'puppet:///modules/openafs/CellServDB',
require => Package['openafs-client'],
}
file { "${openafs_path}/ThisCell":
ensure => present,
replace => true,
content => template('openafs/ThisCell.erb'),
require => Package['openafs-client'],
}
file { "${openafs_path}/cacheinfo":
ensure => present,
replace => true,
content => template('openafs/cacheinfo.erb'),
require => Package['openafs-client'],
}
service { 'openafs-client':
ensure => running,
enable => true,
hasstatus => false,
pattern => '/sbin/afsd',
require => [
File["${openafs_path}/CellServDB"],
Package[$openafs_dkms],
],
}
}