Регистрация переменной Ansible в файле журнала

Регистрация переменной Ansible в файле журнала

Я пытаюсь запустить команду yum list updates и вывести результат в файл на локальном сервере. Это можно масштабировать для запуска на нескольких серверах. Я нашел модуль local_action, однако он приводит к нечитаемому файлу. Я нашел команду -debug: var: result, которая показывает необходимую информацию в хорошем формате, но, похоже, нет способа вывести ее в файл.

Ниже приведена инструкция:

---
- hosts:  localhost
  tasks:
  - name: List all available updates
    yum:
      list: updates
    register: result

  - debug:
      var: result
  - local_action:
      module: copy
      content: "{{ result.results }}"
      dest: "/root/yumlist.yml"

Задача отладки возвращает такой результат: *

ok: [localhost] => {
    "result": {
        "changed": false, 
        "failed": false, 
        "results": [
            {
                "arch": "x86_64", 
                "envra": "0:firefox-68.4.1-1.el7_7.x86_64", 
                "epoch": "0", 
                "name": "firefox", 
                "release": "1.el7_7", 
                "repo": "rhel-7-server-rpms", 
                "version": "68.4.1", 
                "yumstate": "available"
            }, 
            {
                "arch": "x86_64", 
                "envra": "0:fribidi-1.0.2-1.el7_7.1.x86_64", 
                "epoch": "0", 
                "name": "fribidi", 
                "release": "1.el7_7.1", 
                "repo": "rhel-7-server-rpms", 
                "version": "1.0.2", 
                "yumstate": "available"
            }, 

и local_action дает мне это...

[{"envra": "0:firefox-68.4.1-1.el7_7.x86_64", "name": "firefox", "repo": "rhel-7-server-rpms", "epoch": "0", "version": "68.4.1", "release": "1.el7_7", "yumstate": "available", "arch" : "x86_64"}, {"envra": "0:fribidi-1.0.2-1.el7_7.1.x86_64", "name":

Есть идеи?

решение1

Если вас не смущает вывод в формате json или yaml, и вы просто хотите, чтобы он выглядел красивее, то есть пара фильтров, которые вы можете попробовать (to_nice_json или to_nice_yaml)Ссылка.

  - local_action:
      module: copy
      content: "{{ result.results |to_nice_json }}"
      dest: "/root/yumlist.yml"

или

  - local_action:
      module: copy
      content: "{{ result.results |to_nice_yaml }}"
      dest: "/root/yumlist.yml"

Связанный контент