heat_template_version: 2014-10-16 description: 'Common Swift Storage Configuration' parameters: Flavor: description: Flavor for Swift storage nodes to request when deploying. type: string constraints: - custom_constraint: nova.flavor HashSuffix: default: unset description: A random string to be used as a salt when hashing to determine mappings in the ring. hidden: true type: string Image: default: overcloud-swift-storage type: string KeyName: default: default description: Name of an existing EC2 KeyPair to enable SSH access to the instances type: string MountCheck: default: 'false' description: Value of mount_check in Swift account/container/object -server.conf type: boolean MinPartHours: type: number default: 1 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance. PartPower: default: 10 description: Partition Power to use when building Swift rings type: number Replicas: type: number default: 3 description: How many replicas to use in the swift rings. SnmpdReadonlyUserName: default: ro_snmp_user description: The user name for SNMPd with readonly rights running on all Overcloud nodes type: string SnmpdReadonlyUserPassword: default: unset description: The user password for SNMPd with readonly rights running on all Overcloud nodes type: string hidden: true NtpServer: type: string default: '' EnablePackageInstall: default: 'false' description: Set to true to enable package installation via Puppet type: boolean resources: SwiftStorage: type: OS::Nova::Server properties: image: {get_param: Image} flavor: {get_param: Flavor} key_name: {get_param: KeyName} user_data_format: SOFTWARE_CONFIG networks: - network: ctlplane StoragePuppetConfig: type: OS::Heat::SoftwareConfig properties: group: puppet outputs: - name: result config: get_file: manifests/overcloud_object.pp StoragePuppetDeployment: type: OS::Heat::StructuredDeployment properties: name: puppet_1 server: {get_resource: SwiftStorage} config: {get_resource: StoragePuppetConfig} StorageRingbuilderPuppetConfig: type: OS::Heat::SoftwareConfig properties: group: puppet outputs: - name: result config: get_file: manifests/ringbuilder.pp StorageRingbuilderPuppetDeployment: type: OS::Heat::StructuredDeployment properties: name: puppet_2 server: {get_resource: SwiftStorage} config: {get_resource: StorageRingbuilderPuppetConfig} SwiftStorageHieraConfig: type: OS::Heat::StructuredConfig properties: group: os-apply-config config: hiera: hierarchy: - heat_config_%{::deploy_config_name} - object - common datafiles: common: raw_data: {get_file: hieradata/common.yaml} object: raw_data: {get_file: hieradata/object.yaml} oac_data: # data we map in from other OAC configurations tripleo::ringbuilder::devices: swift.devices mapped_data: # data supplied directly to this deployment configuration, etc swift::swift_hash_suffix: { get_input: swift_hash_suffix } tripleo::ringbuilder::part_power: { get_input: swift_part_power } tripleo::ringbuilder::replicas: {get_input: swift_replicas } # Swift swift::storage::all::storage_local_net_ip: {get_input: local_ip} swift_mount_check: {get_input: swift_mount_check } tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours } ntp::servers: {get_input: ntp_servers} # NOTE(dprince): build_ring support is currently not wired in. # See: https://review.openstack.org/#/c/109225/ tripleo::ringbuilder::build_ring: True enable_package_install: {get_input: enable_package_install} SwiftStorageHieraDeploy: type: OS::Heat::StructuredDeployment properties: server: {get_resource: SwiftStorage} config: {get_resource: SwiftStorageHieraConfig} signal_transport: NO_SIGNAL input_values: local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]} snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName} snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword} swift_hash_suffix: {get_param: HashSuffix} swift_mount_check: {get_param: MountCheck} swift_min_part_hours: {get_param: MinPartHours} swift_part_power: {get_param: PartPower} swift_replicas: { get_param: Replicas} ntp_servers: str_replace: template: '["server"]' params: server: {get_param: NtpServer} enable_package_install: {get_param: EnablePackageInstall} outputs: hosts_entry: value: str_replace: template: "IP HOST HOST.novalocal" params: IP: {get_attr: [SwiftStorage, networks, ctlplane, 0]} HOST: {get_attr: [SwiftStorage, name]} nova_server_resource: description: Heat resource handle for the swift storage server value: {get_resource: SwiftStorage} swift_device: description: Swift device formatted for swift-ring-builder value: str_replace: template: 'r1z1-IP:%PORT%/d1' params: IP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}