I think you'd need to explicitly iterate over the list for that:

content: |
  {% for host in ansible_play_hosts %}
  {{ host }}:
  The following packages will be updated:

  {% for package in hostvars[host]['output'] %}
  {{ package }}
  {% endfor %}
  {% endfor %}






On Mon, 15 Jan 2024 at 18:00, Dimitri Yioulos <dyiou...@gmail.com> wrote:

> Todd, just before your last posy, i tried  *| to_nice_json * and    *|
> to_nice_yaml* ,  both of which worked, to a point.
>
> Here's what I'm after:
>
> myhost:
>
> The following packages will be updated
>
> paho-c-1.3.13-2.el9
> cpp-11.4.1-2.1.el9
> glibc-headers-2.34-83.el9_3.7
> gnutls-dane-3.7.6-23.el9
> insights-client-3.2.2-1.el9_2
> libblockdev-2.28-7.el9
>
> This is what the output looks like in json format:
>
> myhost:
>
> The following packages will be updated[
>     "paho-c-1.3.13-2.el9",
>     "cpp-11.4.1-2.1.el9",
>     "glibc-headers-2.34-83.el9_3.7",
>     "gnutls-dane-3.7.6-23.el9",
>     "insights-client-3.2.2-1.el9_2",
>     "libblockdev-2.28-7.el9",
>     ~
> ]
>
> I would want to be rid of the square brackets at beginning and end. and be
> rid of the quotes and commas.
>
> Here's what the output looks like in yaml format:
>
> myhost:
>
> The following packages will be updated- paho-c-1.3.13-2.el9
> - cpp-11.4.1-2.1.el9
> - glibc-headers-2.34-83.el9_3.7
> - gnutls-dane-3.7.6-23.el9
> - insights-client-3.2.2-1.el9_2
> - libblockdev-2.28-7.el9
>
> The first package (- paho-c-1.3.13-2.el9) is in the wrong position, and I
> would want to be rid of the dashes and spaces.
>
> I hope I'm not being a pita.
>
>
> On Monday, January 15, 2024 at 11:12:49 AM UTC-5 Todd Lewis wrote:
>
>> What kind of list? You've got a YAML list (with single- instead of
>> double-quotes). You could get a JSON list (i.e. double-quotes) with
>> {{ output | to_json }}
>> or
>> {{ output | to_nice_json }}
>>
>> What kind of list did you have in mind?
>>
>> On Monday, January 15, 2024 at 10:53:29 AM UTC-5 Dimitri Yioulos wrote:
>>
>>> Ah, Todd, you were right. I changed the output path, and it worked. I'm
>>> not sure why i couldn't write to the /tmp directory, but, whatever. My last
>>> question (I hope) on this topic is how to get the output in a list format.
>>> This is what I get presently:
>>>
>>> myhost:
>>> The following packages will be updated['paho-c-1.3.13-2.el9',
>>> 'cpp-11.4.1-2.1.el9', 'glibc-headers-2.34-83.el9_3.7',
>>> 'gnutls-dane-3.7.6-23.el9', 'insights-client-3.2.2-1.el9_2',
>>> 'libblockdev-2.28-7.el9', 'libblockdev-loop-2.28-7.el9',
>>> 'libfastjson-0.99.9-5.el9', 'libvirt-daemon-9.5.0-7.el9_3',
>>> 'libvirt-daemon-driver-interface-9.5.0-7.el9_3',
>>> 'libvirt-daemon-driver-qemu-9.5.0-7.el9_3', 'openssl-devel-3.0.7-24.el9',
>>> 'python3-file-magic-5.39-14.el9', 'python3-pip-21.2.3-7.el9',
>>> 'python3-policycoreutils-3.5-2.el9', 'qemu-kvm-audio-pa-8.0.0-16.el9_3',
>>> 'qemu-kvm-core-8.0.0-16.el9_3', 'qemu-kvm-device-usb-host-8.0.0-16.el9_3',
>>> 'qemu-kvm-docs-8.0.0-16.el9_3',
>>> 'rpm-plugin-systemd-inhibit-4.16.1.3-25.el9', 'rsyslog-8.2102.0-117.el9',
>>> 'samba-client-4.18.6-100.el9', 'udisks2-iscsi-2.9.4-9.el9',
>>> 'fwupd-plugin-flashrom-1.8.16-1.el9', 'gcc-11.4.1-2.1.el9',
>>> 'gcc-plugin-annobin-11.4.1-2.1.el9', 'gnutls-utils-3.7.6-23.el9',
>>> 'libblockdev-fs-2.28-7.el9', 'libblockdev-lvm-2.28-7.el9',
>>> 'libblockdev-mdraid-2.28-7.el9', ~
>>>
>>> On Monday, January 15, 2024 at 10:31:16 AM UTC-5 Todd Lewis wrote:
>>>
>>>> Your 'deploy' user doesn't have permission to rename a file over
>>>> '/tmp/installed.txt'. Is there an existing file with that name? Are there
>>>> unusual permissions set on '/tmp' itself?
>>>>
>>>> It's bad practice to omit the 'owner:', 'group:', and 'mode:' of files
>>>> created with the copy or template modules. There may be issues created
>>>> because you're taking the defaults. Or not. Just a thought.
>>>>
>>>> Presented with those messages, the first thing I'd check is whether a
>>>> file name '/tmp/installed.txt' already exists on the controller.
>>>>
>>>> On Monday, January 15, 2024 at 10:19:08 AM UTC-5 Dimitri Yioulos wrote:
>>>>
>>>>> For Vladimir's solution, I get the following error:
>>>>>
>>>>> *An exception occurred during task execution. To see the full
>>>>> traceback, use -vvv. The error was: PermissionError: [Errno 1] Operation
>>>>> not permitted: b'/tmp/.ansible_tmpkdy1r8msinstalled.txt' ->
>>>>> b'/tmp/installed.txt'*
>>>>>
>>>>> *fatal: [bed-test-9-dy2 -> localhost]: FAILED! => changed=false*
>>>>> *  checksum: 543ecd635e9686d0ae4915df6ee4e9d8c13ff300  msg: 'Unable to
>>>>> make
>>>>> b''/home/deploy/.ansible/tmp/ansible-tmp-1705331818.2910578-4160834-8270244954747/source''
>>>>> into to /tmp/installed.txt, failed final rename from
>>>>> b''/tmp/.ansible_tmpkdy1r8msinstalled.txt'': [Errno 1] Operation not
>>>>> permitted: b''/tmp/.ansible_tmpkdy1r8msinstalled.txt'' ->
>>>>> b''/tmp/installed.txt'''*
>>>>>
>>>>> On Monday, January 15, 2024 at 10:04:55 AM UTC-5 Dimitri Yioulos wrote:
>>>>>
>>>>>> As I have written the playbook above, here's the error, which I hope
>>>>>> is enough for troubleshooting purposes:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> *<localhost> ESTABLISH LOCAL CONNECTION FOR USER: deploy<localhost>
>>>>>> EXEC /bin/sh -c 'echo ~deploy && sleep 0'<localhost> EXEC /bin/sh -c '(
>>>>>> umask 77 && mkdir -p "` echo /home/deploy/.ansible/tmp `"&& mkdir "` echo
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501
>>>>>> `" && echo ansible-tmp-1705330892.3380399-4159921-3325212893501="` echo
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501
>>>>>> `" ) && sleep 0'Using module file
>>>>>> /usr/local/lib/python3.9/site-packages/ansible/modules/stat.py<localhost>
>>>>>> PUT /home/deploy/.ansible/tmp/ansible-local-4159897gzoguc4w/tmphdv1no20 
>>>>>> TO
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/AnsiballZ_stat.py<localhost>
>>>>>> EXEC /bin/sh -c 'chmod u+x
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/AnsiballZ_stat.py
>>>>>> && sleep 0'<localhost> EXEC /bin/sh -c '/usr/bin/env python
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/AnsiballZ_stat.py
>>>>>> && sleep 0'<localhost> PUT
>>>>>> /home/deploy/.ansible/tmp/ansible-local-4159897gzoguc4w/tmpi_3sa5v9 TO
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/source<localhost>
>>>>>> EXEC /bin/sh -c 'chmod u+x
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/source
>>>>>> && sleep 0'Using module file
>>>>>> /usr/local/lib/python3.9/site-packages/ansible/modules/copy.py<localhost>
>>>>>> PUT /home/deploy/.ansible/tmp/ansible-local-4159897gzoguc4w/tmpyre28n8_ 
>>>>>> TO
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/AnsiballZ_copy.py<localhost>
>>>>>> EXEC /bin/sh -c 'chmod u+x
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/AnsiballZ_copy.py
>>>>>> && sleep 0'<localhost> EXEC /bin/sh -c '/usr/bin/env python
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/AnsiballZ_copy.py
>>>>>> && sleep 0'<localhost> EXEC /bin/sh -c 'rm -f -r
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/
>>>>>> > /dev/null 2>&1 && sleep 0'The full traceback is:Traceback (most recent
>>>>>> call last):  File
>>>>>> "/tmp/ansible_ansible.legacy.copy_payload_rmpe1ef8/ansible_ansible.legacy.copy_payload.zip/ansible/module_utils/basic.py",
>>>>>> line 1700, in atomic_move    os.rename(b_src, b_dest)PermissionError:
>>>>>> [Errno 1] Operation not permitted:
>>>>>> b'/home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/source'
>>>>>> -> b'/tmp/installed.txt'During handling of the above exception, another
>>>>>> exception occurred:Traceback (most recent call last):  File
>>>>>> "/tmp/ansible_ansible.legacy.copy_payload_rmpe1ef8/ansible_ansible.legacy.copy_payload.zip/ansible/module_utils/basic.py",
>>>>>> line 1759, in atomic_move    os.rename(b_tmp_dest_name,
>>>>>> b_dest)PermissionError: [Errno 1] Operation not permitted:
>>>>>> b'/tmp/.ansible_tmp162o24fxinstalled.txt' -> b'/tmp/installed.txt'fatal:
>>>>>> [bed-test-9-dy2 -> localhost]: FAILED! => changed=false  checksum:
>>>>>> 590d9e59d7b819e4c8fb2068a91aec5e760afc8e  diff: []  invocation:
>>>>>> module_args:      _original_basename: tmpi_3sa5v9      attributes: null
>>>>>>   backup: false      checksum: 590d9e59d7b819e4c8fb2068a91aec5e760afc8e
>>>>>>   content: null      dest: /tmp/installed.txt      directory_mode: null
>>>>>>   follow: false      force: true      group: null      local_follow: null
>>>>>>     mode: null      owner: null      remote_src: null      selevel: null
>>>>>>   serole: null      setype: null      seuser: null      src:
>>>>>> /home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/source
>>>>>>     unsafe_writes: false      validate: null  msg: 'Unable to make
>>>>>> b''/home/deploy/.ansible/tmp/ansible-tmp-1705330892.3380399-4159921-3325212893501/source''
>>>>>> into to /tmp/installed.txt, failed final rename from
>>>>>> b''/tmp/.ansible_tmp162o24fxinstalled.txt'': [Errno 1] Operation not
>>>>>> permitted: b''/tmp/.ansible_tmp162o24fxinstalled.txt'' ->
>>>>>> b''/tmp/installed.txt'''*
>>>>>> On Monday, January 15, 2024 at 9:21:26 AM UTC-5 Todd Lewis wrote:
>>>>>>
>>>>>>> You say "the report play does not work", but you don't tell us in
>>>>>>> what way it doesn't work. Is there a template error, undefined 
>>>>>>> variable, or
>>>>>>> something else? Does running with -vv -D indicate anything? "Does not 
>>>>>>> work"
>>>>>>> is too vague. Okay, so it didn't do what you expected, but what did it 
>>>>>>> do?
>>>>>>> Show us the play log.
>>>>>>>
>>>>>>>
>>>>>>> On 1/15/24 8:00 AM, Dimitri Yioulos wrote:
>>>>>>>
>>>>>>> Good morning.
>>>>>>>
>>>>>>> Let me start by saying that I hope I'm not overdoing my asks. I only
>>>>>>> do it when I've tried, but failed, at a solution. Nextly, I hope your 
>>>>>>> kind
>>>>>>> answers help others, as well. That said, the following playbook returns
>>>>>>> packages that are set for update:
>>>>>>>
>>>>>>> ---
>>>>>>>
>>>>>>> - hosts: all
>>>>>>>   gather_facts: false
>>>>>>>
>>>>>>>   tasks:
>>>>>>>     - name: Check packages to upgrade
>>>>>>>       dnf:
>>>>>>>         list: updates
>>>>>>>       register: packages
>>>>>>>
>>>>>>>     - name: Show packages to upgrade
>>>>>>>       debug:
>>>>>>>         msg: >-
>>>>>>>           {%- set output=[] -%}
>>>>>>>           {%- for p in packages.results -%}
>>>>>>>           {{ output.append((p.name ~ '-' ~ p.version ~ '-' ~
>>>>>>> p.release)) }}
>>>>>>>           {%- endfor -%}
>>>>>>>           {{ output }}
>>>>>>>
>>>>>>>     - local_action:
>>>>>>>         module: copy
>>>>>>>         content: |
>>>>>>>           {% for host in ansible_play_hosts %}
>>>>>>>           {{ host }}:
>>>>>>>           The following packages will be updated
>>>>>>>
>>>>>>>           {%- set output=[] -%}
>>>>>>>           {%- for p in packages.results -%}
>>>>>>>           {{ output.append((p.name ~ '-' ~ p.version ~ '-' ~
>>>>>>> p.release)) }}
>>>>>>>           {%- endfor -%}
>>>>>>>           {{ output }}
>>>>>>>           {% endfor -%}
>>>>>>>
>>>>>>>         dest: "/tmp/installed.txt"
>>>>>>>       run_once: yes
>>>>>>>       tags:
>>>>>>>         - report
>>>>>>>
>>>>>>> It works fine through the debug play:
>>>>>>>
>>>>>>> ok: [myhost] => {
>>>>>>>     "msg": [
>>>>>>>         "paho-c-1.3.13-2.el9",
>>>>>>>         "cpp-11.4.1-2.1.el9",
>>>>>>>         "glibc-headers-2.34-83.el9_3.7",
>>>>>>>         "gnutls-dane-3.7.6-23.el9",
>>>>>>>         "insights-client-3.2.2-1.el9_2",
>>>>>>>         "libblockdev-2.28-7.el9",
>>>>>>>         "libblockdev-loop-2.28-7.el9",
>>>>>>>         "libfastjson-0.99.9-5.el9",
>>>>>>>         ~
>>>>>>>
>>>>>>> However, the report play does not work. I would have thought that
>>>>>>> setting it up like the debug play should do it, but no. How can I get 
>>>>>>> that
>>>>>>> list of updates, along with the hostname, into a textfile report?
>>>>>>>
>>>>>>> As ever, many 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 ansible-proje...@googlegroups.com.
>>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/d/msgid/ansible-project/7348c423-e5f5-46d3-816c-95bb14712c0bn%40googlegroups.com
>>>>>>> <https://groups.google.com/d/msgid/ansible-project/7348c423-e5f5-46d3-816c-95bb14712c0bn%40googlegroups.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 ansible-project+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/00c6a78d-b102-4468-bce9-f478a27e88e2n%40googlegroups.com
> <https://groups.google.com/d/msgid/ansible-project/00c6a78d-b102-4468-bce9-f478a27e88e2n%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 ansible-project+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CAF8BbLaTfusvVJc7cqerMFt%2BNP7ipu9CfEUGeW3kKpSJq058ZQ%40mail.gmail.com.

Reply via email to