heat_template_version: pike

description: >
  This is first boot configuration for development purposes. It allows
  overriding contents of the deployed images via rsync before
  configuration (e.g. Puppet) starts, speeding up the feedback loop
  between making a change and seeing it applied.

  To prepare the host, put something like this to /etc/rsyncd.conf:

      [overcloudsync]
            path = /root/overcloudsync
            comment = overcloud pre-puppet customizations

  Then run `rsync --daemon`.

parameters:
  dev_rsync_host:
    type: string
    default: 192.168.122.1
    description: Host to sync contents from via rsync
  dev_rsync_module:
    type: string
    default: overcloudsync
    description: Name of the module defined in rsyncd.conf on rsync_host

resources:
  userdata:
    type: OS::Heat::MultipartMime
    properties:
      parts:
      - config: {get_resource: rsync_config}
        subtype: 'x-shellscript'

  rsync_config:
    type: OS::Heat::SoftwareConfig
    properties:
      config:
        str_replace:
          template: |
            #!/bin/bash
            rsync -avr rsync://RSYNC_HOST/RSYNC_MODULE /
          params:
            RSYNC_HOST: {get_param: dev_rsync_host}
            RSYNC_MODULE: {get_param: dev_rsync_module}

outputs:
  OS::stack_id:
    value: {get_resource: userdata}