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/f77d8db1-9ac4-431e-9b51-13b4be052440%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.