heat_template_version: pike

description: >
  A software config which runs puppet on the {{role}} role

parameters:
  ConfigDebug:
    default: false
    description: Whether to run config management (e.g. Puppet) in debug mode.
    type: boolean
  StepConfig:
     type: string
     description: Config manifests that will be used to step through the deployment.
     default: ''
  PuppetTags:
     type: string
     description: List of comma-separated tags to limit puppet catalog to.
     default: ''

conditions:

  puppet_tags_empty: {equals : [{get_param: PuppetTags}, '']}

resources:

  {{role}}PuppetConfigImpl:
    type: OS::Heat::SoftwareConfig
    properties:
      group: puppet
      options:
        enable_debug: {get_param: ConfigDebug}
        enable_hiera: True
        enable_facter: False
        modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
        tags:
          if:
          - puppet_tags_empty
          - ''
          - list_join:
            - ','
            - ['file,concat,file_line,augeas', {get_param: PuppetTags}]
      outputs:
      - name: result
      inputs:
      - name: step
        type: Number
      config:
        list_join:
        - ''
        - - str_replace:
              template: {get_file: manifests/overcloud_role.pp}
              params:
                __ROLE__: {{role.lower()}}
          - {get_param: StepConfig}

outputs:
  OS::stack_id:
    description: The software config which runs puppet on the {{role}} role
    value: {get_resource: {{role}}PuppetConfigImpl}
