Add SPOF support & Heat APIs support
- Add SPOF node which aims to manage OpenStack services which are bottleneck in Havana - Add Heat APIs support (cfn & cloudwatch) - Split Heat manifests - Split Ceilometer manifests - Create site-ref for basic architecture of small deployment Signed-off-by: Emilien Macchi <emilien.macchi@enovance.com>
This commit is contained in:
		@@ -35,6 +35,7 @@ class os_params {
 | 
			
		||||
  $site_domain = 'enovance.com'
 | 
			
		||||
  $storage = True
 | 
			
		||||
  $verbose = False
 | 
			
		||||
  $spof_nodes_are_separate = False
 | 
			
		||||
 | 
			
		||||
  # Root hashed password
 | 
			
		||||
  # ToDo(EmilienM): Disable root user in all nodes and use sudo
 | 
			
		||||
@@ -211,13 +212,19 @@ class os_params {
 | 
			
		||||
  $heat_db_user = 'heat'
 | 
			
		||||
  $ks_heat_admin_host = 'os-ci-test3.enovance.com'
 | 
			
		||||
  $ks_heat_admin_port = '8004'
 | 
			
		||||
  $ks_heat_cfn_admin_port = '8000'
 | 
			
		||||
  $ks_heat_cloudwatch_admin_port = '8003'
 | 
			
		||||
  $ks_heat_admin_proto = 'http'
 | 
			
		||||
  $ks_heat_internal_host = 'os-ci-test3.enovance.com'
 | 
			
		||||
  $ks_heat_internal_port = '8004'
 | 
			
		||||
  $ks_heat_cfn_internal_port = '8000'
 | 
			
		||||
  $ks_heat_cloudwatch_internal_port = '8003'
 | 
			
		||||
  $ks_heat_internal_proto = 'http'
 | 
			
		||||
  $ks_heat_password = 'EIMMvWvDPEvI08ggT2azYMhGdsNXe6'
 | 
			
		||||
  $ks_heat_public_host = 'os-ci-test3.enovance.com'
 | 
			
		||||
  $ks_heat_public_port = '8004'
 | 
			
		||||
  $ks_heat_cfn_public_port = '8000'
 | 
			
		||||
  $ks_heat_cloudwatch_public_port = '8003'
 | 
			
		||||
  $ks_heat_public_proto = 'http'
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -196,6 +196,15 @@ class os_identity_controller (
 | 
			
		||||
    public_protocol  => $ks_heat_public_proto,
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  class { 'heat::keystone::auth_cfn':
 | 
			
		||||
    admin_address    => $ks_heat_admin_host,
 | 
			
		||||
    internal_address => $ks_heat_internal_host,
 | 
			
		||||
    password         => $ks_heat_password,
 | 
			
		||||
    public_address   => $ks_heat_public_host,
 | 
			
		||||
    public_protocol  => $ks_heat_public_proto,
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  @@haproxy::balancermember{"${fqdn}-keystone_api":
 | 
			
		||||
    listening_service => "keystone_api_cluster",
 | 
			
		||||
    server_names      => $::hostname,
 | 
			
		||||
 
 | 
			
		||||
@@ -21,6 +21,9 @@ class os_lb_server(
 | 
			
		||||
  $cinder_api                     = true,
 | 
			
		||||
  $glance_api                     = true,
 | 
			
		||||
  $neutron_api                    = true,
 | 
			
		||||
  $heat_api                       = true,
 | 
			
		||||
  $heat_cfn_api                   = true,
 | 
			
		||||
  $heat_cloudwatch_api            = true,
 | 
			
		||||
  $nova_api                       = true,
 | 
			
		||||
  $ec2_api                        = true,
 | 
			
		||||
  $metadata_api                   = true,
 | 
			
		||||
@@ -39,6 +42,8 @@ class os_lb_server(
 | 
			
		||||
  $ks_cinder_public_port          = $os_params::ks_cinder_public_port,
 | 
			
		||||
  $ks_glance_public_port          = $os_params::ks_glance_public_port,
 | 
			
		||||
  $ks_heat_public_port            = $os_params::ks_heat_public_port,
 | 
			
		||||
  $ks_heat_cfn_public_port        = $os_params::ks_heat_cfn_public_port,
 | 
			
		||||
  $ks_heat_cloudwatch_public_port = $os_params::ks_heat_cloudwatch_public_port,
 | 
			
		||||
  $ks_keystone_admin_port         = $os_params::ks_keystone_admin_port,
 | 
			
		||||
  $ks_keystone_public_port        = $os_params::ks_keystone_public_port,
 | 
			
		||||
  $ks_neutron_public_port         = $os_params::ks_neutron_public_port,
 | 
			
		||||
@@ -115,6 +120,14 @@ monitor fail if ceilometer_api_dead
 | 
			
		||||
acl heat_api_dead nbsrv(heat_api_cluster) lt 1
 | 
			
		||||
monitor fail if heat_api_dead
 | 
			
		||||
<%- end -%>
 | 
			
		||||
<%- if @heat_cfn_api -%>
 | 
			
		||||
acl heat_api_cfn_dead nbsrv(heat_api_cfn_cluster) lt 1
 | 
			
		||||
monitor fail if heat_api_cfn_dead
 | 
			
		||||
<%- end -%>
 | 
			
		||||
<%- if @heat_cloudwatch_api -%>
 | 
			
		||||
acl heat_api_cloudwatch_dead nbsrv(heat_api_cloudwatch_cluster) lt 1
 | 
			
		||||
monitor fail if heat_api_cloudwatch_dead
 | 
			
		||||
<%- end -%>
 | 
			
		||||
<%- if @horizon -%>
 | 
			
		||||
acl horizon_dead nbsrv(horizon_cluster) lt 1
 | 
			
		||||
monitor fail if horizon_dead
 | 
			
		||||
@@ -200,6 +213,12 @@ monitor fail if horizon_dead
 | 
			
		||||
  if $heat_api {
 | 
			
		||||
    os_haproxy_listen_http{ 'heat_api_cluster': ports => $ks_heat_public_port }
 | 
			
		||||
  }
 | 
			
		||||
  if $heat_cfn_api {
 | 
			
		||||
    os_haproxy_listen_http{ 'heat_api_cfn_cluster': ports => $ks_heat_cfn_public_port }
 | 
			
		||||
  }
 | 
			
		||||
  if $heat_cloudwatch_api {
 | 
			
		||||
    os_haproxy_listen_http{ 'heat_api_cloudwatch_cluster': ports => $ks_heat_cloudwatch_public_port }
 | 
			
		||||
  }
 | 
			
		||||
  if $horizon {
 | 
			
		||||
    os_haproxy_listen_http{ 'horizon_cluster': ports => $horizon_port }
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -13,10 +13,12 @@
 | 
			
		||||
# License for the specific language governing permissions and limitations
 | 
			
		||||
# under the License.
 | 
			
		||||
#
 | 
			
		||||
# Network Metadata node
 | 
			
		||||
# Network Metadata node (need to be run once)
 | 
			
		||||
# Could be managed by spof_node manifest
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
class os_network_metadata(
 | 
			
		||||
  $enabled                              = true,
 | 
			
		||||
  $debug                                = $os_params::debug,
 | 
			
		||||
  $ks_neutron_password                  = $os_params::ks_neutron_password,
 | 
			
		||||
  $neutron_metadata_proxy_shared_secret = $os_params::neutron_metadata_proxy_shared_secret,
 | 
			
		||||
@@ -27,6 +29,7 @@ class os_network_metadata(
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
  class { 'neutron::agents::metadata':
 | 
			
		||||
    enabled       => $enabled,
 | 
			
		||||
    shared_secret => $neutron_metadata_proxy_shared_secret,
 | 
			
		||||
    debug         => $debug,
 | 
			
		||||
    metadata_ip   => $ks_nova_internal_host,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										55
									
								
								roles/orchestration/orchestration_api.pp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								roles/orchestration/orchestration_api.pp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
 | 
			
		||||
#
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
# Orchestration APIs node
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
class os_orchestration_api(
 | 
			
		||||
  $ks_heat_public_port             = $os_params::ks_heat_public_port,
 | 
			
		||||
  $ks_heat_cfn_public_port         = $os_params::ks_heat_cfn_public_port,
 | 
			
		||||
  $ks_heat_cloudwatch_public_port  = $os_params::ks_heat_cloudwatch_public_port,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
  class { 'heat::api': }
 | 
			
		||||
 | 
			
		||||
  class { 'heat::api-cfn': }
 | 
			
		||||
 | 
			
		||||
  class { 'heat::api-cloudwatch': }
 | 
			
		||||
 | 
			
		||||
  @@haproxy::balancermember{"${fqdn}-heat_api":
 | 
			
		||||
    listening_service => "heat_api_cluster",
 | 
			
		||||
    server_names      => $::hostname,
 | 
			
		||||
    ipaddresses       => $local_ip,
 | 
			
		||||
    ports             => $ks_heat_public_port,
 | 
			
		||||
    options           => "check inter 2000 rise 2 fall 5"
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @@haproxy::balancermember{"${fqdn}-heat_cfn_api":
 | 
			
		||||
    listening_service => "heat_cfn_api_cluster",
 | 
			
		||||
    server_names      => $::hostname,
 | 
			
		||||
    ipaddresses       => $local_ip,
 | 
			
		||||
    ports             => $ks_heat__cfn_public_port,
 | 
			
		||||
    options           => "check inter 2000 rise 2 fall 5"
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @@haproxy::balancermember{"${fqdn}-heat_cloudwatch_api":
 | 
			
		||||
    listening_service => "heat_cloudwatch_api_cluster",
 | 
			
		||||
    server_names      => $::hostname,
 | 
			
		||||
    ipaddresses       => $local_ip,
 | 
			
		||||
    ports             => $ks_heat_cloudwatch_public_port,
 | 
			
		||||
    options           => "check inter 2000 rise 2 fall 5"
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -13,10 +13,10 @@
 | 
			
		||||
# License for the specific language governing permissions and limitations
 | 
			
		||||
# under the License.
 | 
			
		||||
#
 | 
			
		||||
# Orchestration controller node
 | 
			
		||||
# Orchestration common node
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
class os_orchestration_controller(
 | 
			
		||||
class os_orchestration_common(
 | 
			
		||||
  $ks_keystone_internal_host  = $os_params::ks_keystone_internal_host,
 | 
			
		||||
  $ks_keystone_internal_port  = $os_params::ks_keystone_internal_port,
 | 
			
		||||
  $ks_keystone_internal_proto = $os_params::ks_keystone_internal_proto,
 | 
			
		||||
@@ -52,20 +52,4 @@ class os_orchestration_controller(
 | 
			
		||||
    debug             => $debug,
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  class { 'heat::api': }
 | 
			
		||||
 | 
			
		||||
  class { 'heat::engine':
 | 
			
		||||
    heat_metadata_server_url      => "${ks_heat_public_proto}://${ks_heat_public_host}:8000",
 | 
			
		||||
    heat_waitcondition_server_url => "${ks_heat_public_proto}://${ks_heat_public_host}:8000/v1/waitcondition",
 | 
			
		||||
    heat_watch_server_url         => "${ks_heat_public_proto}://${ks_heat_public_host}:8003"
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @@haproxy::balancermember{"${fqdn}-heat_api":
 | 
			
		||||
    listening_service => "heat_api_cluster",
 | 
			
		||||
    server_names      => $::hostname,
 | 
			
		||||
    ipaddresses       => $local_ip,
 | 
			
		||||
    ports             => $ks_keystone_internal_port,
 | 
			
		||||
    options           => "check inter 2000 rise 2 fall 5"
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								roles/orchestration/orchestration_engine.pp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								roles/orchestration/orchestration_engine.pp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
 | 
			
		||||
#
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
# Orchestration engine node (should be run once)
 | 
			
		||||
# Could be managed by spof node as Active / Passive.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
class os_orchestration_engine(
 | 
			
		||||
  $enable                     = true,
 | 
			
		||||
  $ks_heat_public_host        = $os_params::ks_heat_public_host,
 | 
			
		||||
  $ks_heat_public_proto       = $os_params::ks_heat_public_proto,
 | 
			
		||||
  $ks_heat_password           = $os_params::ks_heat_password,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
  class { 'heat::engine':
 | 
			
		||||
    enabled                       => $enabled,
 | 
			
		||||
    heat_metadata_server_url      => "${ks_heat_public_proto}://${ks_heat_public_host}:8000",
 | 
			
		||||
    heat_waitcondition_server_url => "${ks_heat_public_proto}://${ks_heat_public_host}:8000/v1/waitcondition",
 | 
			
		||||
    heat_watch_server_url         => "${ks_heat_public_proto}://${ks_heat_public_host}:8003"
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										119
									
								
								roles/spof/spof_node.pp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								roles/spof/spof_node.pp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,119 @@
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
 | 
			
		||||
#
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
# SPOF node usually installed twice, and managed by Pacemaker / Corosync
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
class os_spof_node(
 | 
			
		||||
  $debug                          = $os_params::debug,
 | 
			
		||||
  $spof_nodes_are_separate        = $os_params::spof_nodes_are_separate,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
  # Corosync & Pacemaker
 | 
			
		||||
  class { 'corosync':
 | 
			
		||||
    enable_secauth    => false,
 | 
			
		||||
    authkey           => '/var/lib/puppet/ssl/certs/ca.pem',
 | 
			
		||||
    bind_address      => $::network_eth0,
 | 
			
		||||
    multicast_address => '239.1.1.2',
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  cs_property {
 | 
			
		||||
    'no-quorum-policy':         value => 'ignore';
 | 
			
		||||
    'stonith-enabled':          value => 'false';
 | 
			
		||||
    'pe-warn-series-max':       value => 1000;
 | 
			
		||||
    'pe-input-series-max':      value => 1000;
 | 
			
		||||
    'cluster-recheck-interval': value => '5min';
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  corosync::service { 'pacemaker':
 | 
			
		||||
    version => '0',
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  # Resources managed by Corosync as Active / Passive
 | 
			
		||||
  Package['corosync'] ->
 | 
			
		||||
  file { '/usr/lib/ocf/resource.d/heartbeat/ceilometer-agent-central':
 | 
			
		||||
    source  => '/scripts/ceilometer-agent-central_resource-agent',
 | 
			
		||||
    mode    => '0755',
 | 
			
		||||
    owner   => 'root',
 | 
			
		||||
    group   => 'root',
 | 
			
		||||
  } ->
 | 
			
		||||
  cs_primitive { 'ceilometer-agent-central':
 | 
			
		||||
    primitive_class => 'ocf',
 | 
			
		||||
    primitive_type  => 'ceilometer-agent-central',
 | 
			
		||||
    provided_by     => 'heartbeat',
 | 
			
		||||
    operations      => {
 | 
			
		||||
      'monitor' => { interval => '10s', 'timeout' => '30s' },
 | 
			
		||||
      'start'   => { interval => '0', 'timeout' => '30s', 'on-fail' => 'restart' }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Package['corosync'] ->
 | 
			
		||||
  file { '/usr/lib/ocf/resource.d/heartbeat/neutron-metadata-agent':
 | 
			
		||||
    source  => '/scripts/neutron-metadata-agent_resource-agent',
 | 
			
		||||
    mode    => '0755',
 | 
			
		||||
    owner   => 'root',
 | 
			
		||||
    group   => 'root',
 | 
			
		||||
  } ->
 | 
			
		||||
  cs_primitive { 'neutron-metadata-agent':
 | 
			
		||||
    primitive_class => 'ocf',
 | 
			
		||||
    primitive_type  => 'neutron-metadata-agent',
 | 
			
		||||
    provided_by     => 'heartbeat',
 | 
			
		||||
    operations      => {
 | 
			
		||||
      'monitor' => { interval => '10s', 'timeout' => '30s' },
 | 
			
		||||
      'start'   => { interval => '0', 'timeout' => '30s', 'on-fail' => 'restart' }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Package['corosync'] ->
 | 
			
		||||
  file { '/usr/lib/ocf/resource.d/heartbeat/heat-engine':
 | 
			
		||||
    source  => '/scripts/heat-engine_resource-agent',
 | 
			
		||||
    mode    => '0755',
 | 
			
		||||
    owner   => 'root',
 | 
			
		||||
    group   => 'root',
 | 
			
		||||
  } ->
 | 
			
		||||
  cs_primitive { 'heat-engine':
 | 
			
		||||
    primitive_class => 'ocf',
 | 
			
		||||
    primitive_type  => 'heat-engine',
 | 
			
		||||
    provided_by     => 'heartbeat',
 | 
			
		||||
    operations      => {
 | 
			
		||||
      'monitor' => { interval => '10s', 'timeout' => '30s' },
 | 
			
		||||
      'start'   => { interval => '0', 'timeout' => '30s', 'on-fail' => 'restart' }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  # If SPOF nodes are separated from controller nodes,
 | 
			
		||||
  # we should import common OpenStack classes:
 | 
			
		||||
  if $spof_nodes_are_separate {
 | 
			
		||||
    class { 'os_network_common': }
 | 
			
		||||
    class { 'os_orchestration_common': }
 | 
			
		||||
    class { 'os_telemetry_common': }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  # Run OpenStack Networking Metadata service
 | 
			
		||||
  class { 'os_network_metadata':
 | 
			
		||||
    enabled => false,
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  # Run Heat Engine service
 | 
			
		||||
  class { 'os_orchestration_engine':
 | 
			
		||||
    enabled => false,
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  # Run Ceilometer Agent Central service
 | 
			
		||||
  class { 'os_telemetry_central_agent':
 | 
			
		||||
    enabled => false,
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								roles/telemetry/telemetry_central_agent.pp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								roles/telemetry/telemetry_central_agent.pp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
 | 
			
		||||
#
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
# Telemetry Central Agent node (should be run once)
 | 
			
		||||
# Could be managed by spof node as Active / Passive.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
class os_telemetry_central_agent(
 | 
			
		||||
  $enable = true,
 | 
			
		||||
){
 | 
			
		||||
 | 
			
		||||
  class { 'ceilometer::agent::central':
 | 
			
		||||
    enabled => $enabled,
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
# License for the specific language governing permissions and limitations
 | 
			
		||||
# under the License.
 | 
			
		||||
#
 | 
			
		||||
# Metering server nodes
 | 
			
		||||
# Telemetry server nodes
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
class os_telemetry_server(
 | 
			
		||||
@@ -59,6 +59,4 @@ class os_telemetry_server(
 | 
			
		||||
    options           => "check inter 2000 rise 2 fall 5"
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
# Ceilometer Central Agent is defined in site.pp since it must be installed on only node (not able to scale-out)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										134
									
								
								site-ref.pp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								site-ref.pp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,134 @@
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
 | 
			
		||||
#
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
# Basic Architecture
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
import 'params.pp'
 | 
			
		||||
 | 
			
		||||
# Import roles
 | 
			
		||||
import 'roles/automation/*.pp'
 | 
			
		||||
import 'roles/cache/*.pp'
 | 
			
		||||
import 'roles/common/*.pp' # mandatory
 | 
			
		||||
import 'roles/compute/*.pp'
 | 
			
		||||
import 'roles/dashboard/*.pp'
 | 
			
		||||
import 'roles/database/*.pp'
 | 
			
		||||
import 'roles/identity/*.pp'
 | 
			
		||||
import 'roles/image/*.pp'
 | 
			
		||||
import 'roles/load-balancer/*.pp'
 | 
			
		||||
import 'roles/messaging/*.pp'
 | 
			
		||||
import 'roles/monitoring/*.pp'
 | 
			
		||||
import 'roles/network/*.pp'
 | 
			
		||||
import 'roles/object-storage/*.pp'
 | 
			
		||||
import 'roles/orchestration/*.pp'
 | 
			
		||||
import 'roles/telemetry/*.pp'
 | 
			
		||||
import 'roles/volume/*.pp'
 | 
			
		||||
 | 
			
		||||
node common {
 | 
			
		||||
 | 
			
		||||
# Params
 | 
			
		||||
  class { 'os_params': }
 | 
			
		||||
 | 
			
		||||
# Common system configuration
 | 
			
		||||
  class { 'os_common_system': }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Puppet Master node
 | 
			
		||||
node '1-deployment-node' inherits common{
 | 
			
		||||
 | 
			
		||||
# Everything related to puppet is bootstraped by jenkins
 | 
			
		||||
# and other stuffs are made by common class.
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Controller node
 | 
			
		||||
node '3-controller-nodes' inherits common {
 | 
			
		||||
 | 
			
		||||
## SPOF services:
 | 
			
		||||
    class {'spof_node':}
 | 
			
		||||
 | 
			
		||||
## Databases:
 | 
			
		||||
    class {'os_nosql_node':}
 | 
			
		||||
    class {'os_sql_node':}
 | 
			
		||||
 | 
			
		||||
## Telemetry
 | 
			
		||||
    class {'os_telemetry_common':}
 | 
			
		||||
    class {'os_telemetry_server':}
 | 
			
		||||
 | 
			
		||||
## Identity
 | 
			
		||||
    class {'os_identity_controller':
 | 
			
		||||
      local_ip => $ipaddress_eth0,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
# Object Storage
 | 
			
		||||
    class {'os_swift_proxy': }
 | 
			
		||||
    class {'os_swift_ringbuilder':
 | 
			
		||||
      rsyncd_ipaddress => $ipaddress_eth0,
 | 
			
		||||
    }
 | 
			
		||||
    Class['os_swift_ringbuilder'] -> Class['os_swift_proxy']
 | 
			
		||||
 | 
			
		||||
# Messaging
 | 
			
		||||
    class {'os_messaging_server': }
 | 
			
		||||
 | 
			
		||||
# Cache
 | 
			
		||||
    class {'os_cache_server': }
 | 
			
		||||
 | 
			
		||||
# Networking
 | 
			
		||||
    class {'os_network_common': }
 | 
			
		||||
    class {'os_network_controller': }
 | 
			
		||||
 | 
			
		||||
# Orchestration
 | 
			
		||||
    class {'os_orchestration_common': }
 | 
			
		||||
    class {'os_orchestration_api': }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# == Network nodes
 | 
			
		||||
node '2-network-nodes' inherits common {
 | 
			
		||||
 | 
			
		||||
    class {'os_network_common': }
 | 
			
		||||
    class {'os_network_dhcp': }
 | 
			
		||||
    class {'os_network_lbaas': }
 | 
			
		||||
    class {'os_network_l3': }
 | 
			
		||||
    class {'os_network_vpn':}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Storage nodes
 | 
			
		||||
node '3-object-storage-nodes' inherits common{
 | 
			
		||||
 | 
			
		||||
## Telemetry
 | 
			
		||||
    class {'os_telemetry_common':}
 | 
			
		||||
 | 
			
		||||
## Object Storage
 | 
			
		||||
    class { 'os_swift_storage':
 | 
			
		||||
        local_ip    => $ipaddress_eth0,
 | 
			
		||||
        swift_zone  =>  $os_params::os_swift_zone[$::hostname],
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Compute nodes
 | 
			
		||||
node 'compute-node' inherits common {
 | 
			
		||||
 | 
			
		||||
  class { 'os_network_compute': }
 | 
			
		||||
 | 
			
		||||
  class { 'os_compute_hypervisor':
 | 
			
		||||
    local_ip => $ipaddress_eth0,
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user