Firstboot rsync for development purposes
authorJiri Stransky <jistr@redhat.com>
Thu, 30 Apr 2015 17:37:32 +0000 (19:37 +0200)
committerJiri Stransky <jistr@redhat.com>
Mon, 4 May 2015 13:47:58 +0000 (15:47 +0200)
Could be used to e.g. make changes to the puppet modules on the fly
without the need to rebuild images. Documented in the template
description.

Change-Id: I6a1fef20d4f4afa4bedac5ea520949697793f0ed

firstboot/userdata_dev_rsync.yaml [new file with mode: 0644]

diff --git a/firstboot/userdata_dev_rsync.yaml b/firstboot/userdata_dev_rsync.yaml
new file mode 100644 (file)
index 0000000..7dc7bd4
--- /dev/null
@@ -0,0 +1,49 @@
+heat_template_version: 2014-10-16
+
+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}