Нет смысла заранее формировать JSON, можно сразу сохранить из YAML:
- name: Get hardware facts
  ansible.builtin.setup:
    filter: 
      - processor
      - memtotal_mb
  register: devices
- name: Save hardware facts
  ansible.builtin.copy:
    content: '{{ devicenames | to_nice_json }}'
    dest: /home/rootuser/ansible/!final_result_files/{{ inventory_hostname }}_hardware_info2_FINAL.json
  delegate_to: localhost
  vars:
    devicenames:
      Cpu: '{{ devices.ansible_facts.ansible_processor[2] }}'
      Mem: '{{ devices.ansible_facts.ansible_memtotal_mb }}'
Но на самом деле эту операцию можно выполнить в один шаг:
- name: Save hardware facts
  ansible.builtin.copy:
    content: '{{ devicenames | to_nice_json }}'
    dest: /home/rootuser/ansible/!final_result_files/{{ inventory_hostname }}_hardware_info2_FINAL.json
  delegate_to: localhost
  vars:
    devicenames:
      Cpu: '{{ ansible_processor[2] }}'
      Mem: '{{ ansible_memtotal_mb }}'