The only way I've been able to do something like this, assuming I understand correctly, is to write the value to a vars file in the playbook, then load that vars file when you need it later on in the playbook.
On Wednesday, November 30, 2016 at 2:29:07 PM UTC-8, [email protected] wrote: > > Hello - > > Is there a way to modify the content of a registered variable? I have a > shared role that logs output of my deployments. > > *tasks/main.yml* > - name: Log {{ filename }} changes > blockinfile: > dest: "{{ log_dir }}/{{ pb_logname }}" > content: | > ********** > File '{{ filename }}' updated! > Modifying role: "{{ role_path }}" > Source file: {{ registered_content.src }} > New file: {{ registered_content.dest }} > Backup file: {{ registered_content.backup_file }} > ********** > create: yes > insertafter: EOF > marker: "" > when: log_type == "file change" > > > Thus far this has been working great because there was always a > pre-existing file to replace. However, I just hit some config that creates > a whole new file that never previously existed. Therefore, the first time > it runs I get the below error. > > TASK [role_config_loadbalancer : Log misc.properties changes] >> ****************** >> fatal: [target]: FAILED! => {"failed": true, "msg": "the field 'args' has >> an invalid value, which appears to include a variable that is undefined. The >> error was: 'dict object' has no attribute 'backup_file'\n\nThe error >> appears to have been in '/manh/roles/role_utility_logging/tasks/main.yml': >> line 2, column 3, but may\nbe elsewhere in the file depending on the exact >> syntax problem.\n\nThe offending line appears to be:\n\n---\n- name: Log {{ >> filename }} changes\n ^ here\nWe could be wrong, but this one looks like >> it might be an issue with\nmissing quotes. Always quote template >> expression brackets when they\nstart a value. For instance:\n\n >> with_items:\n - {{ foo }}\n\nShould be written as:\n\n >> with_items:\n - \"{{ foo }}\"\n"} > > > In hindsight, this makes sense, since there was nothing to backup in the > first place. So I'm wondering if I can manually add a value in > 'backup_file' field after it's already been registered? > > TASK [role_config_loadbalancer : debug] >> **************************************** >> ok: [target] => { >> "deployed_copy_output": { >> > "backup_file": "ADD TEXT HERE", > > "changed": true, >> "checksum": "0d4216d1a25218c5656d8e0db2e68499eba74238", >> "dest": >> "/apps/scope/manh/MDA/distribution/DeploymentDirector/installer/properties/misc.properties", >> >> "gid": 2345, >> "group": "g_wmspt", >> "md5sum": "49552048354e51b2a5d2959a93441766", >> "mode": "0644", >> "owner": "wmspt", >> "secontext": "system_u:object_r:default_t:s0", >> "size": 9980, >> "src": >> "/manh/software/distribution/ansible/staged_config/ptl01a0fap006/MDA/misc.properties", >> >> "state": "file", >> "uid": 3267 >> } >> } > > > This way I can continue to use the single logging role without needing to > accommodate for corner cases like this and pollute the play output. Or > perhaps there is a better way to design this all together. Thoughts? > > Thanks! > -- -- 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/3a302e1a-aab2-41a8-8bc6-ef8ad37745ab%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
