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.

Reply via email to