Puppet Class: nova::compute::rbd

Defined in:
manifests/compute/rbd.pp

Overview

Parameters:

  • libvirt_rbd_user (Any)
  • libvirt_rbd_secret_uuid (Any) (defaults to: false)
  • libvirt_rbd_secret_key (Any) (defaults to: undef)
  • libvirt_images_rbd_pool (Any) (defaults to: 'rbd')
  • libvirt_images_rbd_ceph_conf (Any) (defaults to: '/etc/ceph/ceph.conf')
  • rbd_keyring (Any) (defaults to: 'client.nova')


53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'manifests/compute/rbd.pp', line 53

class nova::compute::rbd (
  $libvirt_rbd_user,
  $libvirt_rbd_secret_uuid      = false,
  $libvirt_rbd_secret_key       = undef,
  $libvirt_images_rbd_pool      = 'rbd',
  $libvirt_images_rbd_ceph_conf = '/etc/ceph/ceph.conf',
  $rbd_keyring                  = 'client.nova',
) {

  include nova::params

  nova_config {
    'libvirt/images_type':          value => 'rbd';
    'libvirt/images_rbd_pool':      value => $libvirt_images_rbd_pool;
    'libvirt/images_rbd_ceph_conf': value => $libvirt_images_rbd_ceph_conf;
    'libvirt/rbd_user':             value => $libvirt_rbd_user;
  }

  if $libvirt_rbd_secret_uuid {
    nova_config {
      'libvirt/rbd_secret_uuid': value => $libvirt_rbd_secret_uuid;
    }

    file { '/etc/nova/secret.xml':
      content => template('nova/secret.xml-compute.erb')
    }

    exec { 'get-or-set virsh secret':
      command => '/usr/bin/virsh secret-define --file /etc/nova/secret.xml | /usr/bin/awk \'{print $2}\' | sed \'/^$/d\' > /etc/nova/virsh.secret',
      creates => '/etc/nova/virsh.secret',
      require => File['/etc/nova/secret.xml']
    }

    if $libvirt_rbd_secret_key {
      $libvirt_key = $libvirt_rbd_secret_key
    } else {
      $libvirt_key = "$(ceph auth get-key ${rbd_keyring})"
    }
    exec { 'set-secret-value virsh':
      command => "/usr/bin/virsh secret-set-value --secret ${libvirt_rbd_secret_uuid} --base64 ${libvirt_key}",
      unless  => "/usr/bin/virsh secret-get-value ${libvirt_rbd_secret_uuid}",
      require => Exec['get-or-set virsh secret']
    }

  }

}