Configure BlockStorage services via resource chains
Wires the steps into the BlockStorage role and ensures the installed-packages list is written on a per-step basis on all roles, as it happens on the controllers already. Change-Id: Iaec8ad3b2afbef6d586b7b46abaa1434cdb62f41
This commit is contained in:
parent
463333ccc7
commit
fa08aaf4a7
|
@ -66,10 +66,6 @@ parameters:
|
|||
default: ''
|
||||
type: string
|
||||
description: List of externally managed Ceph Mon Host IPs. Only used for external Ceph deployments.
|
||||
CinderEnableIscsiBackend:
|
||||
default: true
|
||||
description: Whether to enable or not the Iscsi backend for Cinder
|
||||
type: boolean
|
||||
CinderEnableRbdBackend:
|
||||
default: false
|
||||
description: Whether to enable or not the Rbd backend for Cinder
|
||||
|
@ -296,18 +292,6 @@ parameters:
|
|||
type: json
|
||||
|
||||
# Controller-specific params
|
||||
CinderLVMLoopDeviceSize:
|
||||
default: 10280
|
||||
description: The size of the loopback file used by the cinder LVM driver.
|
||||
type: number
|
||||
CinderPassword:
|
||||
description: The password for the cinder service account, used by cinder-api.
|
||||
type: string
|
||||
hidden: true
|
||||
CinderISCSIHelper:
|
||||
default: lioadm
|
||||
description: The iSCSI helper to use with cinder.
|
||||
type: string
|
||||
ControllerCount:
|
||||
type: number
|
||||
default: 1
|
||||
|
@ -626,7 +610,13 @@ parameters:
|
|||
type: json
|
||||
description: Optional scheduler hints to pass to nova
|
||||
default: {}
|
||||
|
||||
BlockStorageServices:
|
||||
default:
|
||||
- OS::TripleO::Services::CinderVolume
|
||||
description: A list of service resources (configured in the Heat
|
||||
resource_registry) which represent nested stacks
|
||||
for each service that should get installed on the BlockStorage nodes.
|
||||
type: comma_delimited_list
|
||||
|
||||
# Object storage specific parameters
|
||||
ObjectStorageCount:
|
||||
|
@ -993,6 +983,11 @@ resources:
|
|||
NodeIndex: '%index%'
|
||||
ServiceConfigSettings: {get_attr: [ComputeServiceChain, config_settings]}
|
||||
|
||||
BlockStorageServiceChain:
|
||||
type: OS::TripleO::Services
|
||||
properties:
|
||||
Services: {get_param: BlockStorageServices}
|
||||
EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
|
||||
|
||||
BlockStorage:
|
||||
type: OS::Heat::ResourceGroup
|
||||
|
@ -1003,21 +998,9 @@ resources:
|
|||
resource_def:
|
||||
type: OS::TripleO::BlockStorage
|
||||
properties:
|
||||
Debug: {get_param: Debug}
|
||||
Image: {get_param: BlockStorageImage}
|
||||
CinderISCSIHelper: {get_param: CinderISCSIHelper}
|
||||
CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
|
||||
# Purpose of the dedicated BlockStorage nodes should be to use their local LVM
|
||||
CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
|
||||
CinderPassword: {get_param: CinderPassword}
|
||||
KeyName: {get_param: KeyName}
|
||||
Flavor: {get_param: OvercloudBlockStorageFlavor}
|
||||
VirtualIP: {get_attr: [VipMap, net_ip_map, ctlplane]}
|
||||
GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
|
||||
RabbitPassword: {get_param: RabbitPassword}
|
||||
RabbitUserName: {get_param: RabbitUserName}
|
||||
RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
|
||||
RabbitClientPort: {get_param: RabbitClientPort}
|
||||
TimeZone: {get_param: TimeZone}
|
||||
NtpServer: {get_param: NtpServer}
|
||||
UpdateIdentifier: {get_param: UpdateIdentifier}
|
||||
|
@ -1027,13 +1010,13 @@ resources:
|
|||
params:
|
||||
'%stackname%': {get_param: 'OS::stack_name'}
|
||||
ServiceNetMap: {get_param: ServiceNetMap}
|
||||
EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
|
||||
ExtraConfig: {get_param: ExtraConfig}
|
||||
BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
|
||||
CloudDomain: {get_param: CloudDomain}
|
||||
ServerMetadata: {get_param: ServerMetadata}
|
||||
SchedulerHints: {get_param: BlockStorageSchedulerHints}
|
||||
NodeIndex: '%index%'
|
||||
ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, config_settings]}
|
||||
|
||||
ObjectStorageServiceChain:
|
||||
type: OS::TripleO::Services
|
||||
|
@ -1502,6 +1485,8 @@ resources:
|
|||
allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
|
||||
blockstorage_config: {get_attr: [BlockStorage, attributes, config_identifier]}
|
||||
deployment_identifier: {get_param: DeployIdentifier}
|
||||
StepConfig: {get_attr: [BlockStorageServiceChain, step_config]}
|
||||
|
||||
|
||||
CephStorageNodesPostDeployment:
|
||||
type: OS::TripleO::CephStoragePostDeployment
|
||||
|
|
|
@ -11,6 +11,10 @@ parameters:
|
|||
NodeConfigIdentifiers:
|
||||
type: json
|
||||
description: Value which changes if the node configuration may need to be re-applied
|
||||
StepConfig:
|
||||
type: string
|
||||
description: Config manifests that will be used to step through the deployment.
|
||||
default: ''
|
||||
|
||||
resources:
|
||||
|
||||
|
@ -32,22 +36,55 @@ resources:
|
|||
group: puppet
|
||||
options:
|
||||
enable_debug: {get_param: ConfigDebug}
|
||||
enable_hiera: True
|
||||
enable_facter: False
|
||||
inputs:
|
||||
- name: step
|
||||
outputs:
|
||||
- name: result
|
||||
config:
|
||||
get_file: manifests/overcloud_volume.pp
|
||||
list_join:
|
||||
- ''
|
||||
- - get_file: manifests/overcloud_volume.pp
|
||||
- {get_param: StepConfig}
|
||||
|
||||
VolumeDeployment_Step1:
|
||||
VolumeDeployment_Step2:
|
||||
type: OS::Heat::StructuredDeployments
|
||||
depends_on: VolumeArtifactsDeploy
|
||||
properties:
|
||||
name: VolumeDeployment_Step1
|
||||
name: VolumeDeployment_Step2
|
||||
servers: {get_param: servers}
|
||||
config: {get_resource: VolumePuppetConfig}
|
||||
input_values:
|
||||
step: 2
|
||||
update_identifier: {get_param: NodeConfigIdentifiers}
|
||||
|
||||
VolumeDeployment_Step3:
|
||||
type: OS::Heat::StructuredDeployments
|
||||
depends_on: VolumeDeployment_Step2
|
||||
properties:
|
||||
name: VolumeDeployment_Step3
|
||||
servers: {get_param: servers}
|
||||
config: {get_resource: VolumePuppetConfig}
|
||||
input_values:
|
||||
step: 3
|
||||
update_identifier: {get_param: NodeConfigIdentifiers}
|
||||
|
||||
VolumeDeployment_Step4:
|
||||
type: OS::Heat::StructuredDeployments
|
||||
depends_on: VolumeDeployment_Step3
|
||||
properties:
|
||||
name: VolumeDeployment_Step4
|
||||
servers: {get_param: servers}
|
||||
config: {get_resource: VolumePuppetConfig}
|
||||
input_values:
|
||||
step: 4
|
||||
update_identifier: {get_param: NodeConfigIdentifiers}
|
||||
|
||||
# Note, this should come last, so use depends_on to ensure
|
||||
# this is created after any other resources.
|
||||
ExtraConfig:
|
||||
depends_on: VolumeDeployment_Step1
|
||||
depends_on: VolumeDeployment_Step4
|
||||
type: OS::TripleO::NodeExtraConfigPost
|
||||
properties:
|
||||
servers: {get_param: servers}
|
||||
|
|
|
@ -4,29 +4,6 @@ parameters:
|
|||
Image:
|
||||
default: overcloud-cinder-volume
|
||||
type: string
|
||||
CinderEnableIscsiBackend:
|
||||
default: true
|
||||
description: Whether to enable or not the Iscsi backend for Cinder
|
||||
type: boolean
|
||||
CinderISCSIHelper:
|
||||
default: lioadm
|
||||
description: The iSCSI helper to use with cinder.
|
||||
type: string
|
||||
CinderLVMLoopDeviceSize:
|
||||
default: 10280
|
||||
description: The size of the loopback file used by the cinder LVM driver.
|
||||
type: number
|
||||
CinderPassword:
|
||||
description: The password for the cinder service and db account, used by cinder-api.
|
||||
type: string
|
||||
hidden: true
|
||||
Debug:
|
||||
default: ''
|
||||
description: Set to True to enable debugging on all services.
|
||||
type: string
|
||||
VirtualIP: # deprecated. Use per service VIPs instead.
|
||||
default: ''
|
||||
type: string
|
||||
ExtraConfig:
|
||||
default: {}
|
||||
description: |
|
||||
|
@ -50,22 +27,6 @@ parameters:
|
|||
default: default
|
||||
description: Name of an existing Nova key pair to enable SSH access to the instances
|
||||
type: string
|
||||
RabbitPassword:
|
||||
type: string
|
||||
hidden: true
|
||||
RabbitUserName:
|
||||
default: 'guest'
|
||||
type: string
|
||||
RabbitClientUseSSL:
|
||||
default: false
|
||||
description: >
|
||||
Rabbit client subscriber parameter to specify
|
||||
an SSL connection to the RabbitMQ host.
|
||||
type: string
|
||||
RabbitClientPort:
|
||||
default: 5672
|
||||
description: Set rabbit subscriber port, change this if using SSL
|
||||
type: number
|
||||
SnmpdReadonlyUserName:
|
||||
default: ro_snmp_user
|
||||
description: The user name for SNMPd with readonly rights running on all Overcloud nodes
|
||||
|
@ -100,18 +61,10 @@ parameters:
|
|||
description: Mapping of service_name -> network name. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
type: json
|
||||
EndpointMap:
|
||||
default: {}
|
||||
description: Mapping of service endpoint -> protocol. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
type: json
|
||||
TimeZone:
|
||||
default: 'UTC'
|
||||
description: The timezone to be set on Cinder nodes.
|
||||
type: string
|
||||
GlanceApiVirtualIP:
|
||||
type: string
|
||||
default: ''
|
||||
NetworkDeploymentActions:
|
||||
type: comma_delimited_list
|
||||
description: >
|
||||
|
@ -143,7 +96,9 @@ parameters:
|
|||
NodeIndex:
|
||||
type: number
|
||||
default: 0
|
||||
|
||||
ServiceConfigSettings:
|
||||
type: json
|
||||
default: {}
|
||||
|
||||
resources:
|
||||
BlockStorage:
|
||||
|
@ -277,35 +232,13 @@ resources:
|
|||
server: {get_resource: BlockStorage}
|
||||
config: {get_resource: BlockStorageConfig}
|
||||
input_values:
|
||||
debug: {get_param: Debug}
|
||||
cinder_dsn:
|
||||
list_join:
|
||||
- ''
|
||||
- - {get_param: [EndpointMap, MysqlInternal, protocol]}
|
||||
- '://cinder:'
|
||||
- {get_param: CinderPassword}
|
||||
- '@'
|
||||
- {get_param: [EndpointMap, MysqlInternal, host]}
|
||||
- '/cinder'
|
||||
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
|
||||
snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
|
||||
cinder_lvm_loop_device_size:
|
||||
str_replace:
|
||||
template: sizeM
|
||||
params:
|
||||
size: {get_param: CinderLVMLoopDeviceSize}
|
||||
cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
|
||||
cinder_iscsi_helper: {get_param: CinderISCSIHelper}
|
||||
cinder_iscsi_ip_address:
|
||||
str_replace:
|
||||
template: "'IP'"
|
||||
params:
|
||||
IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
|
||||
glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
|
||||
rabbit_username: {get_param: RabbitUserName}
|
||||
rabbit_password: {get_param: RabbitPassword}
|
||||
rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
|
||||
rabbit_client_port: {get_param: RabbitClientPort}
|
||||
ntp_servers: {get_param: NtpServer}
|
||||
timezone: {get_param: TimeZone}
|
||||
enable_package_install: {get_param: EnablePackageInstall}
|
||||
|
@ -323,6 +256,7 @@ resources:
|
|||
- heat_config_%{::deploy_config_name}
|
||||
- volume_extraconfig
|
||||
- extraconfig
|
||||
- service_configs
|
||||
- volume
|
||||
- all_nodes # provided by allNodesConfig
|
||||
- '"%{::osfamily}"'
|
||||
|
@ -330,6 +264,8 @@ resources:
|
|||
- network
|
||||
merge_behavior: deeper
|
||||
datafiles:
|
||||
service_configs:
|
||||
mapped_data: {get_param: ServiceConfigSettings}
|
||||
common:
|
||||
raw_data: {get_file: hieradata/common.yaml}
|
||||
network:
|
||||
|
@ -345,17 +281,7 @@ resources:
|
|||
raw_data: {get_file: hieradata/volume.yaml}
|
||||
mapped_data:
|
||||
# Cinder
|
||||
cinder::debug: {get_input: debug}
|
||||
cinder::setup_test_volume::size: {get_input: cinder_lvm_loop_device_size}
|
||||
cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
|
||||
cinder::database_connection: {get_input: cinder_dsn}
|
||||
cinder::rabbit_userid: {get_input: rabbit_username}
|
||||
cinder::rabbit_password: {get_input: rabbit_password}
|
||||
cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
|
||||
cinder::rabbit_port: {get_input: rabbit_client_port}
|
||||
cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
|
||||
cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
|
||||
cinder::glance::glance_api_servers: {get_input: glance_api_servers}
|
||||
tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
|
||||
ntp::servers: {get_input: ntp_servers}
|
||||
timezone::timezone: {get_input: timezone}
|
||||
tripleo::packages::enable_install: {get_input: enable_package_install}
|
||||
|
|
|
@ -54,5 +54,7 @@ if hiera('step') >= 3 {
|
|||
include ::ceph::profile::osd
|
||||
|
||||
hiera_include('ceph_classes')
|
||||
package_manifest{'/var/lib/tripleo/installed-packages/overcloud_ceph': ensure => present}
|
||||
}
|
||||
|
||||
$package_manifest_name = join(['/var/lib/tripleo/installed-packages/overcloud_ceph', hiera('step')])
|
||||
package_manifest{$package_manifest_name: ensure => present}
|
||||
|
|
|
@ -205,6 +205,7 @@ if hiera('step') >= 4 {
|
|||
}
|
||||
|
||||
hiera_include('compute_classes')
|
||||
package_manifest{ '/var/lib/tripleo/installed-packages/overcloud_compute': ensure => present }
|
||||
|
||||
}
|
||||
|
||||
$package_manifest_name = join(['/var/lib/tripleo/installed-packages/overcloud_compute', hiera('step')])
|
||||
package_manifest{$package_manifest_name: ensure => present}
|
||||
|
|
|
@ -39,4 +39,5 @@ if hiera('step') >= 4 {
|
|||
hiera_include('object_classes')
|
||||
}
|
||||
|
||||
package_manifest{'/var/lib/tripleo/installed-packages/overcloud_object': ensure => present}
|
||||
$package_manifest_name = join(['/var/lib/tripleo/installed-packages/overcloud_object', hiera('step')])
|
||||
package_manifest{$package_manifest_name: ensure => present}
|
||||
|
|
|
@ -16,46 +16,55 @@
|
|||
include ::tripleo::packages
|
||||
include ::tripleo::firewall
|
||||
|
||||
create_resources(kmod::load, hiera('kernel_modules'), {})
|
||||
create_resources(sysctl::value, hiera('sysctl_settings'), {})
|
||||
Exec <| tag == 'kmod::load' |> -> Sysctl <| |>
|
||||
if hiera('step') >= 1 {
|
||||
|
||||
if count(hiera('ntp::servers')) > 0 {
|
||||
create_resources(kmod::load, hiera('kernel_modules'), {})
|
||||
create_resources(sysctl::value, hiera('sysctl_settings'), {})
|
||||
Exec <| tag == 'kmod::load' |> -> Sysctl <| |>
|
||||
|
||||
include ::timezone
|
||||
|
||||
if count(hiera('ntp::servers')) > 0 {
|
||||
include ::ntp
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
include ::timezone
|
||||
if hiera('step') >= 4 {
|
||||
|
||||
include ::cinder
|
||||
include ::cinder::config
|
||||
include ::cinder::glance
|
||||
include ::cinder::volume
|
||||
include ::cinder::setup_test_volume
|
||||
include ::cinder
|
||||
include ::cinder::config
|
||||
include ::cinder::glance
|
||||
include ::cinder::volume
|
||||
include ::cinder::setup_test_volume
|
||||
|
||||
$cinder_enable_iscsi = hiera('cinder_enable_iscsi_backend', true)
|
||||
if $cinder_enable_iscsi {
|
||||
$cinder_enable_iscsi = hiera('cinder_enable_iscsi_backend', true)
|
||||
if $cinder_enable_iscsi {
|
||||
$cinder_iscsi_backend = 'tripleo_iscsi'
|
||||
|
||||
cinder::backend::iscsi { $cinder_iscsi_backend :
|
||||
iscsi_ip_address => hiera('cinder_iscsi_ip_address'),
|
||||
iscsi_helper => hiera('cinder_iscsi_helper'),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$cinder_enabled_backends = any2array($cinder_iscsi_backend)
|
||||
class { '::cinder::backends' :
|
||||
$cinder_enabled_backends = any2array($cinder_iscsi_backend)
|
||||
class { '::cinder::backends' :
|
||||
enabled_backends => union($cinder_enabled_backends, hiera('cinder_user_enabled_backends')),
|
||||
}
|
||||
}
|
||||
|
||||
$snmpd_user = hiera('snmpd_readonly_user_name')
|
||||
snmp::snmpv3_user { $snmpd_user:
|
||||
$snmpd_user = hiera('snmpd_readonly_user_name')
|
||||
snmp::snmpv3_user { $snmpd_user:
|
||||
authtype => 'MD5',
|
||||
authpass => hiera('snmpd_readonly_user_password'),
|
||||
}
|
||||
class { '::snmp':
|
||||
}
|
||||
class { '::snmp':
|
||||
agentaddress => ['udp:161','udp6:[::1]:161'],
|
||||
snmpd_config => [ join(['createUser ', hiera('snmpd_readonly_user_name'), ' MD5 "', hiera('snmpd_readonly_user_password'), '"']), join(['rouser ', hiera('snmpd_readonly_user_name')]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],
|
||||
}
|
||||
|
||||
hiera_include('volume_classes')
|
||||
}
|
||||
|
||||
hiera_include('volume_classes')
|
||||
package_manifest{'/var/lib/tripleo/installed-packages/overcloud_volume': ensure => present}
|
||||
$package_manifest_name = join(['/var/lib/tripleo/installed-packages/overcloud_volume', hiera('step')])
|
||||
package_manifest{$package_manifest_name: ensure => present}
|
||||
|
|
Loading…
Reference in New Issue