fuel-library/deployment/puppet/vmware/manifests/cinder/vmdk.pp
Igor Gajsin 6bcf2bfe83 Fix cinder-vmware failing on Ubuntu
The manifest for cinder-vmware role expects that package cinder-volume
will be installed by manifests for cinder role. But it doesn't because
https://bugs.launchpad.net/fuel/+bug/1398817

In this case cinder-vmware install this package independently.
Closes-bug: 1446544

Change-Id: Ieb55202eea499274999f9eb084966883f07c064e
2015-04-23 14:33:36 +03:00

153 lines
4.9 KiB
Puppet

# Copyright 2015 Mirantis, 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.
# This type creates cinder-volume service with VMDK backend, which provides
# block storage solution for vSphere's virtual machine instances.
define vmware::cinder::vmdk(
$vc_host = '1.2.3.4',
$vc_user = 'administrator@vsphere.local',
$vc_password = '',
$availability_zone_name = 'non-nova',
$vc_volume_folder = 'cinder-volumes',
$vc_wsdl_location = '',
$vc_api_retry_count = 10,
$vc_host_version = '',
$vc_image_transfer_timeout_secs = 7200,
$vc_max_objects_retrieval = 100,
$vc_task_poll_interval = 5,
$vc_tmp_dir = '/tmp',
$cinder_conf_dir = '/etc/cinder/cinder.d',
$cinder_log_dir = '/var/log/cinder',
$debug = false,
)
{
include cinder::params
$index = $availability_zone_name
$cinder_volume_conf = "${cinder_conf_dir}/vmware-${index}.conf"
$cinder_volume_log = "${cinder_log_dir}/vmware-${index}.log"
$cinder_conf = $::cinder::params::cinder_conf
$cinder_volume_vmware = "${::cinder::params::volume_service}-vmware"
if ! defined(File[$cinder_conf_dir]) {
file { $cinder_conf_dir:
ensure => directory,
owner => 'cinder',
group => 'cinder',
mode => '0750'
}
}
if ! defined (File[$cinder_volume_conf]) {
file { $cinder_volume_conf:
ensure => present,
content => template('vmware/cinder-volume.conf.erb'),
mode => '0600',
owner => 'cinder',
group => 'cinder',
}
}
File[$cinder_conf_dir]->File[$cinder_volume_conf]
if ! defined(Service["cinder_volume_vmware_${index}"]) {
service { "cinder_volume_vmware_${index}":
ensure => running,
name => "${cinder_volume_vmware}-${index}",
enable => true
}
}
case $::osfamily {
'RedHat': {
$src_init = $cinder_volume_vmware
$dst_init = '/etc/init.d'
$cinder_volume_vmware_init = "${dst_init}/${cinder_volume_vmware}"
$init_link = "${cinder_volume_vmware_init}-${index}"
if ! defined(File[$init_link]) {
file { $init_link:
ensure => link,
target => $cinder_volume_vmware_init
}
}
$cinder_volume_default = "/etc/sysconfig/${cinder_volume_vmware}-${index}"
if ! defined(File[$cinder_volume_default]){
file { $cinder_volume_default:
ensure => present,
content => "OPTIONS='--config-file=${cinder_conf} \
--config-file=${cinder_volume_conf}'",
}
}
File[$cinder_volume_default]~>
Service["cinder_volume_vmware_${index}"]
}
'Debian': {
$cinder_volume_default = "/etc/default/${cinder_volume_vmware}-${index}"
$src_init = "${cinder_volume_vmware}.conf"
$dst_init = '/etc/init'
ensure_packages($::cinder::params::volume_package)
Package[$::cinder::params::volume_package] -> Exec[$src_init]
if ! defined(File[$cinder_volume_default]) {
file { $cinder_volume_default:
ensure => present,
content => "CINDER_VOLUME_OPTS='--config-file=${cinder_conf} \
--config-file=${cinder_volume_conf} --log-file=${cinder_volume_log}'",
}
}
$cinder_volume_vmware_init = "${dst_init}/${cinder_volume_vmware}.conf"
$init_link = "/etc/init/${cinder_volume_vmware}-${index}.conf"
if ! defined(File[$init_link]) {
file { $init_link:
ensure => link,
target => $cinder_volume_vmware_init
}
}
$init_reload_cmd = '/sbin/initctl reload-configuration'
$init_reload = 'initctl reload-configuration'
if ! defined(Exec[$init_reload]) {
exec { $init_reload:
command => $init_reload_cmd,
path => [ '/bin', '/sbin', '/usr/bin', '/usr/sbin' ]
}
}
File[$cinder_volume_default]~>
Exec[$init_reload]->
Service["cinder_volume_vmware_${index}"]
}
default: {
fail { "Unsupported OS family (${::osfamily})": }
}
}
$cmd = "cp /usr/share/cinder/${src_init} ${dst_init}"
if ! defined(Exec[$src_init]) {
exec {$src_init:
command => $cmd,
path => [ '/bin', '/sbin', '/usr/bin', '/usr/sbin' ]
}
}
Exec[$src_init]->
File[$init_link]->
File[$cinder_volume_default]
}