Having a module that has a couple of modes, one might be via action plugin 
> to register a consistent symlink timestamp, and another via standard module 
> to make one "the one", and to clean out older timestamps, seems to make a 
> lot of sense.
>
> Maybe down the right track:
>
> # this would have to be a bypass host loop plugin or something to get a 
> consistent timestamp, but maybe we don't care
> - deploy_prepare: 
>   register: deploy_timestamp 
>

> - deploy_helper: timestamp={{ deploy_timestamp.time }} base=/opt/base
>   register: where_to
>
 
For the deploys we do with our galaxy role, a consistent timestamp is not 
an issue (small projects, single hosts). But for something in core, I would 
expect the ability to create a single timestamp for all hosts. I also 
really like the idea of a separate deploy_helper module that takes in this 
timestamp - but I remarked in my blogpost that a timestamp isn't really 
required (I gave 'commit hash' as an example folder name).

Perhaps:
- deploy_helper: *release_version*={{ deploy_timestamp.time }} 
base=/opt/base
  register: where_to

Which allows for:
- deploy_helper: release_version={{ my_own_versioning_implementation }} 
base=/opt/base
  register: where_to
 

> # git checkout to where_to.path
>

I'm assuming "where_to.path" is the release-path-with-timestamp, and that 
this line is a placeholder for anything that goes on before the actual 
release is ready.

Question: does the deploy_helper assume a folder structure?
So in this case: would the where_to.path point to "/opt/base/releases/{{ 
timestamp }}" ?

Our role currently places a file called "BUILD_UNFINISHED" in the 
where_to.path, and uses that file to remove failed builds (any folder 
containing it will die in the startup of the next deploy). That helped us 
out also, not having to identify where the "current" symlink is pointing 
to. Does that sound logical? 

Param: unfinished_file=BUILD_UNFINISHED (or yes/no, with a fixed value 
maybe)

# symlink latest dir into live and remove other symlinks
> - deploy_helper: timestamp={{ deploy_timestamp.time }} base=/opt/base 
> live=/opt/live clean=yes
>
 
Again: does this assume a folder structure? 
So in this case, the symlink would become: /opt/live -> 
/opt/base/releases/{{ timestamp }} ?
And any old releases in /opt/base/releases would be removed?

(sorry for al the questions, I'm trying to map your example to my actual 
cases)

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/992523ce-aa09-4c34-8137-2b730b258ccb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to