Merci Ghislain, I ve tried it and it works as you described it, here my
files:
├── main.yml
├── role_a
│ ├── meta
│ │ └── main.yml
│ └── tasks
│ └── main.yml
└── role_handler
├── handlers
│ ├── do_certs.yml
│ └── main.yml
└── tasks
├── do_certs.yml
└── main.yml
# role_a/tasks/main.yml
- debug:
msg="Starting Role a"
- command: /bin/false
failed_when: False
changed_when: True
notify:
- do certs
# role_handler/handlers/main.yml
- name: do certs
include: do_certs.yml
# role_handler/*tasks*/do_certs.yml
- name: copy certs
debug:
msg="Copy Certs"
- name: insert certs
debug:
msg="{{ item }}"
with_items:
- cert1
- cert2
# main.yml
- hosts: localhost
connection: local
roles:
- role_a
Yields
PLAY
> ***************************************************************************
>
> TASK [setup]
> *******************************************************************
> ok: [localhost]
>
> TASK [role_handler : debug]
> ****************************************************
> ok: [localhost] => {
> "msg": "handler role included"
> }
>
> TASK [role_a : debug]
> **********************************************************
> ok: [localhost] => {
> "msg": "Starting Role a"
> }
>
> TASK [role_a : command]
> ********************************************************
> changed: [localhost]
>
> RUNNING HANDLER [role_handler : do certs]
> **************************************
> included:
> /home/ilya/spielwiese/ansible/post_roles/role_handler/tasks/do_certs.yml
> for localhost
>
> RUNNING HANDLER [role_handler : copy certs]
> ************************************
> ok: [localhost] => {
> "msg": "Copy Certs"
> }
>
> RUNNING HANDLER [role_handler : insert certs]
> **********************************
> ok: [localhost] => (item=cert1) => {
> "item": "cert1",
> "msg": "cert1"
> }
> ok: [localhost] => (item=cert2) => {
> "item": "cert2",
> "msg": "cert2"
> }
>
> PLAY RECAP
> *********************************************************************
> localhost : ok=7 changed=1 unreachable=0
> failed=0
>
>
> Compilation finished at Sat Feb 20 12:45:07
> PLAY
> ***************************************************************************
>
> TASK [setup]
> *******************************************************************
> ok: [localhost]
>
> TASK [role_handler : debug]
> ****************************************************
> ok: [localhost] => {
> "msg": "handler role included"
> }
>
> TASK [role_a : debug]
> **********************************************************
> ok: [localhost] => {
> "msg": "Starting Role a"
> }
>
> TASK [role_a : command]
> ********************************************************
> changed: [localhost]
>
> RUNNING HANDLER [role_handler : do certs]
> **************************************
> included:
> /home/ilya/spielwiese/ansible/post_roles/role_handler/tasks/do_certs.yml
> for localhost
>
> RUNNING HANDLER [role_handler : copy certs]
> ************************************
> ok: [localhost] => {
> "msg": "Copy Certs"
> }
>
> RUNNING HANDLER [role_handler : insert certs]
> **********************************
> ok: [localhost] => (item=cert1) => {
> "item": "cert1",
> "msg": "cert1"
> }
> ok: [localhost] => (item=cert2) => {
> "item": "cert2",
> "msg": "cert2"
> }
>
> PLAY RECAP
> *********************************************************************
> localhost : ok=7 changed=1 unreachable=0
> failed=0
>
>
> Compilation finished at Sat Feb 20 12:45:07
>
>
Am Donnerstag, 18. Februar 2016 15:02:10 UTC+1 schrieb Ghislain Bourgeois:
>
> This looks to me like a use case for handlers, but instead of the handler
> being in a single role, it would apply after many roles. I am not sure this
> is feasible yet, but would be interested in finding out the solution.
>
> I would have to test, but I think something like this might work:
>
> Role our-cacerts - Containing handler to replace ca-certs if they were
> changed
> Role java - depending on our-cacerts and notifying the handler
> Role x - depending on our-cacerts and notifying the handler
>
> I will try to test this today, as we have a use case that would also be
> solved by this.
>
> Regards,
>
> Ghislain
>
> From: [email protected] <javascript:> [mailto:
> [email protected] <javascript:>] On Behalf Of ProfHase
> Sent: February-18-16 5:22 AM
> To: Ansible Project
> Subject: [ansible-project] Re: Ansible Role dependencies After Role
>
> Actually everything is idempotent:
>
> The role I consider does upgrade java to a certain release. Of course the
> cacarts file gets overridden (since some certs might have been revoked
> etc.).
> After each call of this role I need my company certificates to be
> reincluded into the new cacerts file.
>
> Of course I could simply paste the tasks into this role. Unfortunately,
> there are some other roles (for e.g. patching some software) which also
> override the cacerts file.
> In this case I will have redundand code in multiple roles.
>
>
>
> Am Mittwoch, 17. Februar 2016 13:40:34 UTC+1 schrieb Alexey Vazhnov:
> May be the better way for you is make one playbook for
> non-idempotent installer role and one for idempotent configuring.
>
> On Wednesday, February 3, 2016 at 5:25:35 PM UTC+5, ProfHase wrote:
> Hello,
>
> how do I declare a role dependency which is executed after the role, e.g.
> :
>
> After every execution of role A, role B is executed
>
> According to this ons:
>
> http://docs.ansible.com/ansible/playbooks_roles.html#roles
>
> the roles in 'dependencies' are executed before.
>
> The Background:
> My Role A starts an installer that always overrides the certificates. I
> also got a certificate deployment role Role B which should always be called
> after role A.
> --
> 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] <javascript:>.
> To post to this group, send email to [email protected]
> <javascript:>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/614d2ccd-b50f-4fcd-b125-11b7ac2021bc%40googlegroups.com.
>
>
> For more options, visit https://groups.google.com/d/optout.
>
--
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/93f00158-c2d1-4fd3-b5ac-7db80631ac3f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.