Puppet Class: profile::openstack::base::nova::compute::service

Defined in:
modules/profile/manifests/openstack/base/nova/compute/service.pp

Overview

Parameters:

  • version (Any) (defaults to: hiera('profile::openstack::base::version'))
  • instance_dev (Any) (defaults to: hiera('profile::openstack::base::nova::instance_dev'))
  • network_flat_interface (Any) (defaults to: hiera('profile::openstack::base::nova::network_flat_interface'))
  • network_flat_tagged_base_interface (Any) (defaults to: hiera('profile::openstack::base::nova::network_flat_tagged_base_interface'))
  • network_flat_interface_vlan (Any) (defaults to: hiera('profile::openstack::base::nova::network_flat_interface_vlan'))
  • legacy_vlan_naming (Boolean) (defaults to: lookup('legacy_vlan_naming', {default_value => true}))
  • all_cloudvirts (Array[Stdlib::Fqdn]) (defaults to: lookup('profile::openstack::base::nova::all_cloudvirts'))
  • ceph_rbd_pool (Optional[String]) (defaults to: lookup('profile::ceph::client::rbd::pool', {'default_value' => undef}))
  • ceph_rbd_client_name (Optional[String]) (defaults to: lookup('profile::ceph::client::rbd::client_name', {'default_value' => undef}))
  • libvirt_rbd_uuid (Optional[String]) (defaults to: lookup('profile::ceph::client::rbd::libvirt_rbd_uuid', {'default_value' => undef}))


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'modules/profile/manifests/openstack/base/nova/compute/service.pp', line 1

class profile::openstack::base::nova::compute::service(
    $version = hiera('profile::openstack::base::version'),
    $instance_dev = hiera('profile::openstack::base::nova::instance_dev'),
    $network_flat_interface = hiera('profile::openstack::base::nova::network_flat_interface'),
    $network_flat_tagged_base_interface = hiera('profile::openstack::base::nova::network_flat_tagged_base_interface'),
    $network_flat_interface_vlan = hiera('profile::openstack::base::nova::network_flat_interface_vlan'),
    Boolean $legacy_vlan_naming = lookup('legacy_vlan_naming', {default_value => true}),
    Array[Stdlib::Fqdn] $all_cloudvirts = lookup('profile::openstack::base::nova::all_cloudvirts'),
    Optional[String] $ceph_rbd_pool = lookup('profile::ceph::client::rbd::pool', {'default_value' => undef}),
    Optional[String] $ceph_rbd_client_name = lookup('profile::ceph::client::rbd::client_name', {'default_value' => undef}),
    Optional[String] $libvirt_rbd_uuid = lookup('profile::ceph::client::rbd::libvirt_rbd_uuid', {'default_value' => undef}),
    ) {

    require_package('conntrack')

    # If this node was previously a 'spare' node then it will have ferm installed
    #  which will interfere with various nova things
    package { 'ferm':
        ensure  => absent,
    }

    interface::tagged { $network_flat_interface:
        base_interface     => $network_flat_tagged_base_interface,
        vlan_id            => $network_flat_interface_vlan,
        method             => 'manual',
        up                 => 'ip link set $IFACE up',
        down               => 'ip link set $IFACE down',
        legacy_vlan_naming => $legacy_vlan_naming,
    }

    if $::fqdn =~ /^labvirt100[0-9].eqiad.wmnet/ {
        openstack::nova::compute::partition{ '/dev/sdb':
            before => File['/var/lib/nova/instances'],
        }
    }

    # The special value 'thinvirt' indicates that there's no local instance
    #  storage on this host. Ultimately all cloudvirts will be like this,
    #  at which point we won't need this hack.
    if $instance_dev != 'thinvirt' {
        file { '/var/lib/nova/instances':
            ensure => 'directory',
            owner  => 'nova',
            group  => 'nova',
        }

        mount { '/var/lib/nova/instances':
            ensure  => mounted,
            device  => $instance_dev,
            fstype  => 'xfs',
            options => 'defaults',
            require => File['/var/lib/nova/instances'],
        }
    }

    # Increase the size of conntrack table size (default is 65536)
    #  T139598
    sysctl::parameters { 'nova_conntrack':
        values => {
            'net.netfilter.nf_conntrack_max'                   => 262144,
            'net.netfilter.nf_conntrack_tcp_timeout_time_wait' => 65,
        },
    }

    kmod::options { 'nf_conntrack':
        options => 'hashsize=32768',
    }

    # For OpenStack configure unconditional flushes of the L1 cache during VMENTER
    # https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/l1tf.html
    # Functionality got backported to 4.9.168 (kernel ABI 4.9.0-9)
    if os_version('debian == stretch') and (versioncmp($::kernelrelease, '4.9.0-9-amd64') >= 0) {
        kmod::options { 'kvm_intel':
            options => 'vmentry_l1d_flush=always',
        }
    }

    # Reuse the puppet cert as the labvirt cert
    #  Note that even though libvirtd.conf claims to let you
    #  configure these libvirt_ paths, it actually seems
    #  to hardcode things in places so best to stick with
    #  the paths listed below.
    $certpath = '/var/lib/nova'
    $libvirt_cert_pub  = "${certpath}/clientcert.pem"
    $libvirt_cert_priv = "${certpath}/clientkey.pem"
    $libvirt_cert_ca   = "${certpath}/cacert.pem"
    $puppet_cert_pub  = "/var/lib/puppet/ssl/certs/${::fqdn}.pem"
    $puppet_cert_priv = "/var/lib/puppet/ssl/private_keys/${::fqdn}.pem"
    $puppet_cert_ca   = '/var/lib/puppet/ssl/certs/ca.pem'

    file { '/var/lib/nova/ssl/':
        ensure => directory,
    }

    file { $libvirt_cert_pub:
        ensure => present,
        source => "file://${puppet_cert_pub}",
        owner  => 'nova',
        group  => 'libvirt',
    }

    file { $libvirt_cert_priv:
        ensure    => present,
        source    => "file://${puppet_cert_priv}",
        owner     => 'nova',
        group     => 'libvirt',
        mode      => '0640',
        show_diff => false,
    }

    file { $libvirt_cert_ca:
        ensure => present,
        source => "file://${puppet_cert_ca}",
        owner  => 'nova',
        group  => 'libvirt',
    }

    class {'::openstack::nova::compute::service':
        version              => $version,
        certpath             => $certpath,
        all_cloudvirts       => $all_cloudvirts,
        ceph_rbd_pool        => $ceph_rbd_pool,
        ceph_rbd_client_name => $ceph_rbd_client_name,
        libvirt_rbd_uuid     => $libvirt_rbd_uuid,
    }
    contain '::openstack::nova::compute::service'
}