From 1b95e31215f78439a964ee20bfc3d33c9c5dcf1d Mon Sep 17 00:00:00 2001 From: Brenton Partridge Date: Mon, 8 Feb 2016 14:23:03 -0500 Subject: [PATCH 1/3] Add working directory --- templates/upstart.j2 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/templates/upstart.j2 b/templates/upstart.j2 index 860ab82..a565603 100644 --- a/templates/upstart.j2 +++ b/templates/upstart.j2 @@ -26,6 +26,8 @@ env NODE_PATH="{{ forever_node_path }}" env FOREVER_ROOT="{{ forever_root }}" # The application startup Javascript file path. env APPLICATION_PATH="{{ item.file }}" +# Working directory when started +env WORKING_PATH="{{ item.working_dir|default('/') }}" # Process ID file path. env PIDFILE="{{ item.pid_file|default('/var/run/%s.pid' % item.name) }}" # Log file path. @@ -60,6 +62,7 @@ PATH=$NODE_BIN_DIR:$PATH exec forever \ -c "$COMMAND" \ --pidFile $PIDFILE \ +--workingDir $WORKING_PATH \ -a \ -l $LOG \ --minUptime $MIN_UPTIME \ From aafdb69d3299bba9cff540b9fe9679a444aa4375 Mon Sep 17 00:00:00 2001 From: Brenton Partridge Date: Thu, 12 May 2016 19:37:09 -0400 Subject: [PATCH 2/3] Restart the Forever application iff the template changed (for zero-downtime deploys) --- tasks/main.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tasks/main.yml b/tasks/main.yml index 6c55040..7385999 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -6,11 +6,19 @@ - name: Upstart scripts for Forever managed applications template: src=upstart.j2 dest=/etc/init/{{item.name}}.conf owner=root group=root mode=0644 with_items: forever_applications -- name: Ensure enabled Forever applications are (re)started + register: forever_upstart + +- name: Ensure enabled Forever applications are restarted if changed action: service name={{item.name}} state=restarted with_items: forever_applications + when: forever_upstart.changed and item.enabled|default(True) + +- name: Ensure enabled Forever applications are started regardless of change + action: service name={{item.name}} state=started + with_items: forever_applications when: item.enabled|default(True) + - name: Ensure disabled Forever applications are stopped action: service name={{item.name}} state=stopped with_items: forever_applications - when: not item.enabled|default(True) \ No newline at end of file + when: not item.enabled|default(True) From dddd7e4a737c03f8b661c473b7fb1b0411e5adb2 Mon Sep 17 00:00:00 2001 From: Brenton Partridge Date: Tue, 24 May 2016 15:41:36 -0400 Subject: [PATCH 3/3] Make automatic restart optional, on-by-default --- defaults/main.yml | 3 ++- tasks/main.yml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/defaults/main.yml b/defaults/main.yml index 47b2d1c..c6703e9 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -7,4 +7,5 @@ forever_stop_on: "[!2345]" forever_env: {} forever_node_bin_dir: "/usr/local/bin" forever_node_path: "/usr/local/lib/node_modules" -forever_applications: [] \ No newline at end of file +forever_applications: [] +forever_restart: true diff --git a/tasks/main.yml b/tasks/main.yml index 7385999..a0975f4 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -11,7 +11,7 @@ - name: Ensure enabled Forever applications are restarted if changed action: service name={{item.name}} state=restarted with_items: forever_applications - when: forever_upstart.changed and item.enabled|default(True) + when: (forever_restart or forever_upstart.changed) and item.enabled|default(True) - name: Ensure enabled Forever applications are started regardless of change action: service name={{item.name}} state=started