heat_template_version: pike description: 'All Nodes Config for Puppet' parameters: cloud_name_external: type: string cloud_name_internal_api: type: string cloud_name_storage: type: string cloud_name_storage_mgmt: type: string cloud_name_ctlplane: type: string enabled_services: type: comma_delimited_list controller_ips: type: comma_delimited_list logging_groups: type: json logging_sources: type: json service_ips: type: json service_node_names: type: json short_service_node_names: type: json short_service_bootstrap_node: type: json controller_names: type: comma_delimited_list NetVipMap: type: json RedisVirtualIP: type: string default: '' ServiceNetMap: type: json DeployIdentifier: type: string default: '' description: > Setting this to a unique value will re-run any deployment tasks which perform configuration on a Heat stack-update. UpdateIdentifier: type: string default: '' description: > Setting to a previously unused value during stack-update will trigger package update on all nodes StackAction: type: string description: > Heat action on performed top-level stack. Note StackUpdateType is set to UPGRADE when a major-version upgrade is in progress. constraints: - allowed_values: ['CREATE', 'UPDATE'] StackUpdateType: type: string description: > Type of update, to differentiate between UPGRADE and UPDATE cases when StackAction is UPDATE (both are the same stack action). constraints: - allowed_values: ['', 'UPGRADE'] default: '' # NOTE(jaosorior): This is being set as IPA as it's the first # CA we'll actually be testing out. But we can change this if # people request it. CertmongerCA: type: string default: 'IPA' EnableInternalTLS: type: boolean default: false InternalApiNetName: default: internal_api description: The name of the internal API network. type: string ExternalNetName: default: external description: The name of the external network. type: string ManagementNetName: default: management description: The name of the management network. type: string StorageNetName: default: storage description: The name of the storage network. type: string StorageMgmtNetName: default: storage_mgmt description: The name of the Storage management network. type: string TenantNetName: default: tenant description: The name of the tenant network. type: string resources: allNodesConfigImpl: type: OS::Heat::StructuredConfig properties: group: hiera config: datafiles: bootstrap_node: bootstrap_nodeid: {get_input: bootstrap_nodeid} bootstrap_nodeid_ip: {get_input: bootstrap_nodeid_ip} all_nodes: map_merge: - tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: logging_sources} - tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: logging_groups} - enabled_services: yaql: expression: $.data.distinct() data: {get_param: enabled_services} # This writes out a mapping of service_name_enabled: 'true' # For any services not enabled, hiera foo_enabled will # return nil, as it's undefined - map_merge: repeat: template: # Note this must be string 'true' due to # https://bugs.launchpad.net/heat/+bug/1617203 SERVICE_enabled: 'true' for_each: SERVICE: {get_param: enabled_services} # Dynamically generate per-service network data # This works as follows (outer->inner functions) # yaql - filters services where no mapping exists in ServiceNetMap # map_replace: substitute e.g heat_api_network with network