Glance over Cinder support

Change-Id: Ib38a8bd3e5c02ab9214726ab313024fda46cd754
This commit is contained in:
alexey-mr 2016-08-08 18:09:43 +03:00
parent f2138fe7dd
commit 18c7be145d
9 changed files with 217 additions and 8 deletions

View File

@ -0,0 +1,65 @@
# The puppet configures OpenStack glance to use ScaleIO via Cinder.
define glance_config(
$config_file,
) {
Ini_setting {
ensure => 'present',
section => 'glance_store',
path => $config_file,
}
ini_setting { "${config_file}: default_store":
setting => 'default_store',
value => 'cinder',
} ->
ini_setting { "${config_file}: stores":
setting => 'stores',
value => 'glance.store.cinder.Store',
}
}
$scaleio = hiera('scaleio')
if $scaleio['metadata']['enabled'] {
$all_nodes = hiera('nodes')
$nodes = filter_nodes($all_nodes, 'name', $::hostname)
if empty(filter_nodes($nodes, 'role', 'primary-controller')) and empty(filter_nodes($nodes, 'role', 'controller')) {
fail("glance task should be run only on controllers, but node ${::hostname} is not controller")
}
if $scaleio['use_scaleio_for_glance'] {
$glance_services = $::osfamily ? {
'RedHat' => ['openstack-glance-api', 'openstack-glance-registry', 'openstack-glance-glare'],
'Debian' => ['glance-api', 'glance-registry', 'glance-glare'],
}
$glance_api_config_file = '/etc/glance/glance-api.conf'
$glance_glare_config_file = '/etc/glance/glance-glare.conf'
package { ['python-cinderclient', 'python-os-brick', 'python-oslo.rootwrap']:
ensure => 'present',
} ->
class {'scaleio_openstack::glance':
} ->
file { "/etc/glance/rootwrap.conf":
ensure => $ensure,
source => "puppet:///modules/scaleio_fuel/glance_rootwrap.conf",
mode => '0755',
owner => 'root',
group => 'root',
} ->
file { "/etc/sudoers.d/glance_sudoers":
ensure => $ensure,
source => "puppet:///modules/scaleio_fuel/glance_sudoers",
mode => '0644',
owner => 'root',
group => 'root',
} ->
glance_config {"${glance_api_config_file}":
config_file => $glance_api_config_file
} ->
glance_config {"${glance_glare_config_file}":
config_file => $glance_glare_config_file
} ~>
service { $glance_services:
ensure => running,
enable => true,
}
}
}

View File

@ -0,0 +1,27 @@
# The puppet create new OpenStack Glance's test image.
$scaleio = hiera('scaleio')
if $scaleio['metadata']['enabled'] {
$all_nodes = hiera('nodes')
$nodes = filter_nodes($all_nodes, 'name', $::hostname)
if empty(filter_nodes($nodes, 'role', 'primary-controller')) {
fail("create test image task should be run only on primary-controller, but node ${::hostname} is not primary-controller")
}
if $scaleio['use_scaleio_for_glance'] {
$test_vm_image_cfg = hiera('test_vm_image')
if $test_vm_image_cfg {
$image_name = $test_vm_image_cfg['img_name']
$local_path = $test_vm_image_cfg['img_path']
$is_public_opts = $test_vm_image_cfg['public'] ? {
false => '--private',
'false' => '--private',
default => '--public',
}
exec {"test image create":
command => "bash -c 'source /root/openrc && openstack image create ${is_public_opts} --file ${local_path} ${image_name}'",
unless => "bash -c 'source /root/openrc && openstack image list | grep -qi ${image_name}'",
path => '/bin:/usr/bin:/usr/local/bin',
}
}
}
}

View File

@ -0,0 +1,22 @@
# The puppet removes OpenStack Glance's test image if it exists.
# It's needed to change default backend for images.
$scaleio = hiera('scaleio')
if $scaleio['metadata']['enabled'] {
$all_nodes = hiera('nodes')
$nodes = filter_nodes($all_nodes, 'name', $::hostname)
if empty(filter_nodes($nodes, 'role', 'primary-controller')) {
fail("delete test image task should be run only on primary-controller, but node ${::hostname} is not primary-controller")
}
if $scaleio['use_scaleio_for_glance'] {
$test_vm_image_cfg = hiera('test_vm_image')
if $test_vm_image_cfg {
$test_image = $test_vm_image_cfg['img_name']
exec {"test image delete":
command => "bash -c 'source /root/openrc && openstack image delete ${test_image}'",
onlyif => "bash -c 'source /root/openrc && openstack image list | grep -qi ${test_image}'",
path => '/bin:/usr/bin:/usr/local/bin',
}
}
}
}

View File

@ -6,9 +6,19 @@ if $scaleio['metadata']['enabled'] {
if ! $::controller_ips {
fail('Empty Controller IPs configuration')
}
class {'::scaleio::sdc_server':
ensure => 'present',
mdm_ip => $::controller_ips,
$all_nodes = hiera('nodes')
$nodes = filter_nodes($all_nodes, 'name', $::hostname)
$is_compute = !empty(filter_nodes($nodes, 'role', 'compute'))
$is_cinder = !empty(filter_nodes($nodes, 'role', 'cinder'))
$is_glance = (!empty(filter_nodes($nodes, 'role', 'primary-controller')) or !empty(filter_nodes($nodes, 'role', 'controller'))) and $scaleio['use_scaleio_for_glance']
$need_sdc = $is_compute or $is_cinder or $is_glance
if $need_sdc {
class {'::scaleio::sdc_server':
ensure => 'present',
mdm_ip => $::controller_ips,
}
} else{
notify {"Skip SDC server task on the node ${::hostname}": }
}
}

View File

@ -2,8 +2,18 @@
$scaleio = hiera('scaleio')
if $scaleio['metadata']['enabled'] {
class {'::scaleio::sdc_server':
ensure => 'present',
mdm_ip => undef,
$all_nodes = hiera('nodes')
$nodes = filter_nodes($all_nodes, 'name', $::hostname)
$is_compute = !empty(filter_nodes($nodes, 'role', 'compute'))
$is_cinder = !empty(filter_nodes($nodes, 'role', 'cinder'))
$is_glance = (!empty(filter_nodes($nodes, 'role', 'primary-controller')) or !empty(filter_nodes($nodes, 'role', 'controller'))) and $scaleio['use_scaleio_for_glance']
$need_sdc = $is_compute or $is_cinder or $is_glance
if $need_sdc {
class {'::scaleio::sdc_server':
ensure => 'present',
mdm_ip => undef,
}
} else{
notify {"Skip SDC server task on the node ${::hostname}": }
}
}

View File

@ -0,0 +1,27 @@
# Configuration for glance-rootwrap
# This file should be owned by (and only-writeable by) the root user
[DEFAULT]
# List of directories to load filter definitions from (separated by ',').
# These directories MUST all be only writeable by root !
filters_path=/etc/glance/rootwrap.d
# List of directories to search executables in, in case filters do not
# explicitely specify a full path (separated by ',')
# If not specified, defaults to system PATH environment variable.
# These directories MUST all be only writeable by root !
exec_dirs=/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin,/usr/local/sbin
# Enable logging to syslog
# Default value is False
use_syslog=False
# Which syslog facility to use.
# Valid values include auth, authpriv, syslog, local0, local1...
# Default value is 'syslog'
syslog_log_facility=syslog
# Which messages to log.
# INFO means log all usage
# ERROR means only log unsuccessful attempts
syslog_log_level=ERROR

View File

@ -0,0 +1,3 @@
Defaults:glance !requiretty
glance ALL = (root) NOPASSWD: /usr/bin/glance-rootwrap /etc/glance/rootwrap.conf *

View File

@ -130,7 +130,7 @@
- id: scaleio-sdc-server
required_for: [post_deployment_end]
requires: [scaleio-sds-server, scaleio-environment-existing-mdm-ips]
role: [compute, cinder]
role: [primary-controller, controller, compute, cinder]
type: puppet
parameters:
puppet_manifest: puppet/manifests/sdc_server.pp
@ -140,7 +140,7 @@
- id: scaleio-sdc
required_for: [post_deployment_end]
requires: [scaleio-sdc-server]
role: [compute, cinder]
role: [primary-controller, controller, compute, cinder]
type: puppet
parameters:
puppet_manifest: puppet/manifests/sdc.pp
@ -188,3 +188,38 @@
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 600
- id: scaleio-glance-cleanup
required_for: [post_deployment_end]
requires: [scaleio-configure-cluster]
cross-depends:
- name: scaleio-configure-cluster
role: [primary-controller]
type: puppet
parameters:
puppet_manifest: puppet/manifests/glance_delete_test_image.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 600
- id: scaleio-glance
required_for: [post_deployment_end]
requires: [scaleio-glance-cleanup]
cross-depends:
- name: scaleio-glance-cleanup
role: [primary-controller, controller]
type: puppet
parameters:
puppet_manifest: puppet/manifests/glance.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 600
- id: scaleio-glance-test-image
required_for: [post_deployment_end]
requires: [scaleio-glance]
cross-depends:
- name: scaleio-glance
role: [primary-controller]
type: puppet
parameters:
puppet_manifest: puppet/manifests/glance_create_test_image.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 600

View File

@ -296,6 +296,16 @@ attributes:
- condition: "settings:scaleio.existing_cluster.value == true"
action: hide
use_scaleio_for_glance:
type: "checkbox"
value: false
label: "Glance images on ScaleIO"
description: "Glance uses ScaleIO as a backend for images if the option enabled. It uses cinder backend in Glance to store images on ScaleIO."
weight: 195
restrictions:
- condition: "settings:scaleio.existing_cluster.value == true or cluster:fuel_version == '6.1' or cluster:fuel_version == '7.0' or cluster:fuel_version == '8.0'"
action: hide
version:
type: "select"
weight: 200