diff --git a/elements/heat-cfntools/os-config-applier/etc/cfn/hooks.conf b/elements/heat-cfntools/os-config-applier/etc/cfn/hooks.conf index cb50b08b3..09b42891f 100644 --- a/elements/heat-cfntools/os-config-applier/etc/cfn/hooks.conf +++ b/elements/heat-cfntools/os-config-applier/etc/cfn/hooks.conf @@ -2,7 +2,7 @@ [os-refresh-config-{{resource}}] triggers=post.add,post.delete.post.update path=Resources.{{resource}}.Metadata -action=os-refresh-config +action=service os-refresh-config start runas=root {{/heat.refresh}} diff --git a/elements/os-refresh-config/install.d/75-cfn-hup-cronjob b/elements/os-refresh-config/install.d/75-cfn-hup-cronjob new file mode 100755 index 000000000..95f7a7223 --- /dev/null +++ b/elements/os-refresh-config/install.d/75-cfn-hup-cronjob @@ -0,0 +1,9 @@ +#!/bin/bash +install -m 0755 -o root -g root $(dirname $0)/cfn-hup-wrapper /usr/local/bin/cfn-hup-wrapper +cat > /etc/cron.d/cfn-hup < 1: + max_sleep = int(sys.argv[1]) +else: + max_sleep = 59 + +randskew = random.randint(0, max_sleep) +time.sleep(randskew) +with open('/run/os-refresh-config-cfn-hup.lock', 'a') as lock: + fcntl.flock(lock, fcntl.LOCK_EX) + lock.seek(0) + lock.truncate() + lock.write('Lock held by process id %s\n' % os.getpid()) + lock.flush() + try: + subprocess.check_call(['cfn-hup', '--no-daemon']) + except subprocess.CalledProcessError as e: + sys.stderr.write("%s\n", e) + sys.exit(e.returncode)