Consider 
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/assemble_module.html

It combines multiple files into one.

On Friday, March 17, 2023 at 1:40:05 AM UTC-4 Aharonu wrote:

>
> I am digging into  ansible.builtin.copy and ansible.builtin.template *content 
> *but not get options to append.
>
>  Can we append two different tasks data into one csv file instead of over 
> write?
>
> One task i have under '*rescue*' section as example below:
>
> rescue:
>
>
> - name: Create failed_list CSV
>   *ansible.builtin.copy:*
>       *content: |*
>
>
>         failed
>         {% for host in hostvars | dict2items | map(attribute='value') | 
> map(attribute='failed_list', default=[]) | flatten %}
>         {{ host }}
>         {% endfor %}
>       dest: */tmp/facts.csv*
>     run_once: true
>
> /tmp/facts.csv gives
>
> # cat /tmp/facts.csvsomedata1
> somedata2
>
>  I have another task cvs data under '*always*' section:
>
> always:
> - name: append volume info to CSV
>   *ansible.builtin.copy:*
>       *content: |*
>         failed
>         {% example rule  %}
>         {{ host }}
>         {% endfor %}
>       dest: /tmp/facts.csv
>     run_once: true
> Gives:
>
> # cat /tmp/facts.csvsomedata3
>
> somedata4 
>
> It should append data instead of overwrite here. Is it possible?
> We just need end of two files data into one:
>
> # cat /tmp/facts.csv
> somedata1
> somedata2
> somedata3
> somedata4
>
>
> Thank you,
>
> On Thu, 16 Mar 2023, 00:13 Todd Lewis, <[email protected]> wrote:
>
>> Study and play around with these expressions until you understand what 
>> each piece does.
>> set_fact sets a host-specific fact, which for convenience can be 
>> accessed like any other variable.
>> Any host can see other hosts' facts/variables by looking in 
>> hostvars['somehost'].*varname*.
>> The "CSV" is really just a list of failed hosts. With only one column, 
>> does CSV really mean anything?
>> The final copy task should be a template task, but I left it in-line for 
>> clarity.
>>
>>   - name: Update failed_list fact
>>     ansible.builtin.set_fact:
>>       failed_list: "{{ failed_list | default([]) + [ansible_host] }}"
>>
>>   - name: Debug list
>>     ansible.builtin.debug:
>>      msg:
>>       - "by play_hosts: {{ ansible_play_hosts | map('extract', hostvars) | 
>> map(attribute='failed_list') | flatten }}"
>>       - "by all: {{ hostvars | dict2items | map(attribute='value') | 
>> map(attribute='failed_list', default=[]) | flatten }}"
>>
>>   - name: Create failed_list CSV
>>     ansible.builtin.copy:
>>       content: |
>>         failed
>>         {% for host in hostvars | dict2items | map(attribute='value') | 
>> map(attribute='failed_list', default=[]) | flatten %}
>>         {{ host }}
>>         {% endfor %}
>>       dest: /tmp/failed_list.csv
>>     run_once: true
>>
>> Hope this helps.
>> --
>> Todd
>>
>> On 3/15/23 1:44 PM, Aharonu wrote:
>>
>> Hello Everyone,
>>
>> Greetings!
>>
>> I am working to get failed hosts from 'rescue' section into a CSV file. 
>>
>> When i run task for *'inventory_hostname*' from *'rescue'* section:
>>
>> rescue:
>>>         - name: inventory_host name list debug
>>>           debug:
>>>             msg: "{{ inventory_hostname }}"
>>> Output:
>>> TASK [inventory_host name list debug] 
>>> *******************************************************************************************************************************************************************************************************
>>> ok: [bogus1] => {}
>>>
>>> MSG:
>>>
>>> bogus1
>>> ok: [bogus2] => {}
>>>
>>> MSG:
>>>
>>> bogus2
>>>
>>> *when  i tried to append data to a list. *
>>
>>>         - set_fact:
>>>             failed_list: "{{ failed_list + [ansible_host] }}"
>>>         - name: failed_list debug
>>>           debug: var=failed_list
>>>
>>
>> Output:
>> TASK [set_fact] 
>> *****************************************************************************************************************************************************************************************************************************
>> ok: [bogus1]
>> ok: [bogus2]
>>
>> TASK [failed_list debug] 
>> ********************************************************************************************************************************************************************************************************************
>> ok: [bogus1] => {
>>     "failed_list": [
>>         "bogus1"
>>     ]
>> }
>> ok: [bogus2] => {
>>     "failed_list": [
>>         "bogus2"
>>     ]
>> }
>>
>>
>> Here bogus1, bogus2 host names are failed in 'resce' section.
>> We have multiple hosts in our environment. While running playbook we have 
>> to capture failed hostname into a file  as mentioned below:
>>
>> *failed_hosts.csv:*
>> *number of failed hots: 2*
>> *hostname:*
>> *bogus1*
>> *bogus2*
>>
>>
>> Thank you for your help.
>> -- 
>> 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 view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/CANGEjuXCUuCkps8CU9oWnh3XHN7jo6OJnGJQOCQRvay9w1rg2w%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/ansible-project/CANGEjuXCUuCkps8CU9oWnh3XHN7jo6OJnGJQOCQRvay9w1rg2w%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>>
>> -- 
>> Todd
>>
>> -- 
>> 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 view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/9646aced-38a3-b18b-e71f-d7186a8b41fa%40gmail.com
>>  
>> <https://groups.google.com/d/msgid/ansible-project/9646aced-38a3-b18b-e71f-d7186a8b41fa%40gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/5f6783f9-7d45-41cf-8d7a-1b7a92303f53n%40googlegroups.com.

Reply via email to