That looks fine as far as it goes. I think we all agree that none of this 
is particularly hard to implement.

However, the way I read the original poster's original problem, there is an 
implied constraint: One cannot go creating additional files in the .conf 
directory. Full stop. So the "backup: true" option - which lacks the long 
sought "backup_dir:" modifier - is off the table.

The options I see are: (a) create and maintain a staging directory and copy 
the files from there to the target .conf directory; (b) handle copies in 
advance - which is essentially implementing what you wish "backup_dir:" 
would do if existed; (c) give up on "roll your own 'backup: true'" 
altogether.

On Tuesday, October 31, 2023 at 10:30:20 AM UTC-4 Vladimir Botka wrote:

> On Tue, 31 Oct 2023 05:17:35 -0700 (PDT)
> Todd Lewis <uto...@gmail.com> wrote:
>
> > There is no backup system. ... I wouldn't have been able 
> > to create such a thing ... I wouldn't dare use it in 
> > production ... the rest of us have to build our 
> > wheels with the stick-n-stones within our reach.
> > 
> > On Monday, October 30, 2023 at 11:34:33 AM UTC-4 Brian Coca wrote:
> > 
> > > The backup system returns the 'backup_file' information so you can
> > > then operate on the built in backup, like moving it to a central
> > > location ...
>
> This can be achieved with ~20 lines of code. For example, let's
> declare the module defaults
>
> - hosts: all
> module_defaults:
> lineinfile:
> create: true
> backup: true
>
> and register the results
>
> tasks:
>
> - lineinfile:
> path: /tmp/test1.txt
> line: "{{ item }}"
> loop: [line1, line2, line3]
> register: ns_result_001
>
> - lineinfile:
> path: /tmp/test2.txt
> line: line1
> register: ns_result_0021
>
> - lineinfile:
> path: /tmp/test2.txt
> line: line2
> register: ns_result_0022
>
> Declare the list of all variables *ns_result_* and declare the list
> of all backup files
>
> vars:
>
> my_ns_results: "{{ q('vars', *q('varnames', '^ns_result_*')) }}"
>
> ns_bfiles: "{{ (my_ns_results|json_query('[].backup') +
> my_ns_results|json_query('[].results[].backup'))|
> flatten|select }}"
>
> Fetch the backup files to the controller and optionally delete them on
> the remote hosts
>
> post_tasks:
>
> - fetch:
> src: "{{ item }}"
> dest: /tmp/ansible/backup
> loop: "{{ ns_bfiles }}"
>
> - file:
> src: "{{ item }}"
> state: absent
> loop: "{{ ns_bfiles }}"
> when: ns_bfiles_delete|d(false)|bool
>
> For example,
>
> shell> tree /tmp/ansible/backup/
> /tmp/ansible/backup/
> └── test_11
> └── tmp
> ├── test1.txt.7143.2023-10-31@14:18:07~
> ├── test1.txt.7156.2023-10-31@14:18:08~
> └── test2.txt.7182.2023-10-31@14:18:11~
>
> -- 
> Vladimir Botka
>

-- 
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 ansible-project+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/5044711c-c426-4f81-a484-a00921d5b99an%40googlegroups.com.

Reply via email to