로그 파일에 Ansible 등록 변수

로그 파일에 Ansible 등록 변수

a yum list update 명령을 실행하고 결과를 로컬 서버의 파일로 출력하려고 합니다. 이는 여러 서버에서 실행되도록 확장됩니다. 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 ", "버전": "68.4.1", "릴리스": "1.el7_7", "yumstate": "사용 가능", "arch" : "x86_64"}, {"envra": "0:fribidi-1.0 .2-1.el7_7.1.x86_64", "이름":

어떤 아이디어가 있나요?

답변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"

관련 정보