Greetings for the day!

Looks like ansible.builtin.assemble for two different files from directory
to another required file.

Sorry to raise my query again but..wanted to be clear.

My requirement is,  *As i mentioned in previous mail*: playbook should be
having only one csv file but two different tasks using that.( not to store
2 diff files and combine). It is to append one file from 2 tasks.

*# cat /tmp/facts.csv*
somedata1   [coming from 'rescue' task
somedata2   [coming from 'rescue' task
somedata3   [ coming from 'always' task
somedata4   [coming from 'always' task

Thank you,

On Fri, 17 Mar 2023, 17:36 Todd Lewis, <[email protected]> wrote:

> 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
> <https://groups.google.com/d/msgid/ansible-project/5f6783f9-7d45-41cf-8d7a-1b7a92303f53n%40googlegroups.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/CANGEjuWc82JS__FvwNrPVyQenj1DwX%3D%2BqPBVy538Sss1eYpuXg%40mail.gmail.com.

Reply via email to