Hi All, I found this link:
https://docs.ansible.com/ansible/playbooks_loops.html#using-register-with-a-loop Which suggests that once register is run with a loop the output goes into a structure called results. I tried: artisan_current.results[item].stat.exists ? Still no go. On Monday, March 7, 2016 at 1:54:27 PM UTC, Steve Irvine wrote: > > Hi Everyone, > > Quick question, I have a play where I put a laravel queue system in > maintenance mode before running updates against it's consumers. > > I'd like to check for the existence of a file with stat on the queue > manager, run it if it exists (it might not be there if this is the first > run and it hasn't been deployed yet). > > I've tried: > > # If artisan exists, then set the application into maint. mode > - name: checking for artisan's existance in current symlink > stat: path={{ hostvars[item].www_dir }}/current/artisan > register: artisan_current > delegate_to: "{{ item }}" > with_items: groups.queue_managers > > # This makes sure we don't keep serving an old release from the pool > if the deployment fails > # NGinx doesn't use the symlink so might keep serving from an old path > - name: set maint.mode in current version > command: php {{ hostvars[item].www_dir }}/current/artisan down > when: artisan_current.stat.exists is defined and > artisan_current.stat.exists > delegate_to: "{{ item }}" > with_items: groups.queue_managers > > > and > > - name: checking for artisan's existance in current symlink > stat: path={{ hostvars[item].www_dir }}/curthe rent/artisan > register: hostvars[item].artisan_current > delegate_to: "{{ item }}" > with_items: groups.queue_managers > > > - name: set maint.mode in current version > command: php {{ hostvars[item].www_dir }}/current/artisan down > when: hostvars[item].artisan_current.stat.exists is defined and > hostvars[item].artisan_current.stat.exists > delegate_to: "{{ item }}" > with_items: groups.queue_managers > > Whatever happens, I can see the stat return "exists: true", and then the > conditional check fails: > > build 07-Mar-2016 11:57:06 TASK [checking for artisan's existance in current > symlink] ********************* > build 07-Mar-2016 11:57:07 ok: [redacted -> redacted ] => (item=redacted) => > {"changed": false, "item": "redacted", "stat": {"atime": 1457350038.6739905, > "checksum": "659b7d3cb04a4d3b4fd58cb147c2c9b33e0ea831", "ctime": > 1457349988.065974, "dev": 64769, "exists": true, ...lots more output > here...}} > build 07-Mar-2016 11:57:07 build 07-Mar-2016 11:57:07 TASK [set maint.mode in > current version] *************************************** > build 07-Mar-2016 11:57:07 skipping: [redacted] => (item=redacted) => > {"changed": false, "item": "redacted", "skip_reason": "Conditional check > failed", "skipped": true} > > Can anyone help me work out where the register actually puts the results of > the stat and therefore how I can present the results to the when: statement. > > > Thanks, > > > Steve > > -- 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/1bc9034a-e00d-4c13-a1ef-2fdac99165d6%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
