-heat_template_version: 2014-10-16
+heat_template_version: 2015-04-30
description: 'Common Swift Storage Configuration'
parameters:
- ControllerIP:
- default: ''
- type: string
ExtraConfig:
default: {}
description: |
}
}
type: json
+ ObjectStorageExtraConfig:
+ default: {}
+ description: |
+ Role specific additional configuration to inject into the cluster.
+ type: json
Flavor:
description: Flavor for Swift storage nodes to request when deploying.
type: string
default: 'false'
description: Value of mount_check in Swift account/container/object -server.conf
type: boolean
- NeutronEnableTunnelling:
- default: "True"
- type: string
- NeutronNetworkType:
- default: gre
- type: string
MinPartHours:
type: number
default: 1
default: 10
description: Partition Power to use when building Swift rings
type: number
- Password:
- default: unset
- description: The password for the swift service account, used by the swift proxy
- services.
- hidden: true
- type: string
Replicas:
type: number
- default: 1
+ default: 3
description: How many replicas to use in the swift rings.
SnmpdReadonlyUserName:
default: ro_snmp_user
description: The user password for SNMPd with readonly rights running on all Overcloud nodes
type: string
hidden: true
+ UpdateIdentifier:
+ default: ''
+ type: string
+ description: >
+ Setting to a previously unused value during stack-update will trigger
+ package update on all nodes
+ Hostname:
+ type: string
+ default: '' # Defaults to Heat created hostname
resources:
SwiftConfig:
min-part-hours: { get_input: swift_min_part_hours }
mount-check: { get_input: swift_mount_check }
replicas: {get_input: swift_replicas }
- service-password: { get_input: swift_password }
neutron:
- enable_tunnelling: {get_param: NeutronEnableTunnelling}
- tenant_network_type: {get_param: NeutronNetworkType}
ovs:
local_ip: { get_input: neutron_local_ip }
SwiftStorage:
image: {get_param: Image}
flavor: {get_param: Flavor}
key_name: {get_param: KeyName}
- user_data_format: SOFTWARE_CONFIG
networks:
- network: ctlplane
- SwiftKeystoneConfig:
- type: OS::Heat::StructuredConfig
+ user_data_format: SOFTWARE_CONFIG
+ user_data: {get_resource: NodeUserData}
+ name: {get_param: Hostname}
+
+ NodeUserData:
+ type: OS::TripleO::NodeUserData
+
+ InternalApiPort:
+ type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
properties:
- config:
- keystone:
- host: {get_input: keystone_host}
- SwiftStorageKeystone:
- type: OS::Heat::StructuredDeployment
+ ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
+
+ StoragePort:
+ type: OS::TripleO::SwiftStorage::Ports::StoragePort
+ properties:
+ ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
+
+ StorageMgmtPort:
+ type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
properties:
+ ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
+
+ NetworkConfig:
+ type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
+ properties:
+ InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
+ StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
+ StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
+
+ NetworkDeployment:
+ type: OS::TripleO::SoftwareDeployment
+ properties:
+ config: {get_resource: NetworkConfig}
server: {get_resource: SwiftStorage}
- config: {get_resource: SwiftKeystoneConfig}
- signal_transport: NO_SIGNAL
- input_values:
- keystone_host: {get_param: ControllerIP}
+
SwiftStorageDeploy:
type: OS::Heat::StructuredDeployment
properties:
snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
swift_hash_suffix: {get_param: HashSuffix}
swift_mount_check: {get_param: MountCheck}
- swift_password: {get_param: Password}
swift_min_part_hours: {get_param: MinPartHours}
swift_part_power: {get_param: PartPower}
swift_replicas: { get_param: Replicas}
hosts_entry:
value:
str_replace:
- template: "IP HOST HOST.novalocal"
+ template: "IP HOST"
params:
IP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
HOST: {get_attr: [SwiftStorage, name]}
template: 'r1z1-IP:%PORT%/d1'
params:
IP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
+ internal_api_ip_address:
+ description: IP address of the server in the internal_api network
+ value: {get_attr: [InternalApiPort, ip_address]}
+ storage_ip_address:
+ description: IP address of the server in the storage network
+ value: {get_attr: [StoragePort, ip_address]}
+ storage_mgmt_ip_address:
+ description: IP address of the server in the storage_mgmt network
+ value: {get_attr: [StorageMgmtPort, ip_address]}
+ config_identifier:
+ description: identifier which changes if the node configuration may need re-applying
+ value: "None - NO_SIGNAL"