한 줄로 인쇄된 Ansible 사실

한 줄로 인쇄된 Ansible 사실

YAML에서 생성된 Ansible 사실의 일부 정보가 필요합니다. 하지만 오류가 발생합니다. 내 요구 사항은 한 줄로 출력을 얻는 것입니다. 이렇게 하면 CSV나 스프레드시트를 사용하여 필터링할 수 있습니다.

---
- hosts: all
  become: yes
  tasks:
  - name: Get content of remote server
    shell: echo system {{ inventory_hostname }} {{ crashkernel }} {{ ansible_os_family }}

실수:

+++++++++++++++++
TASK [Get content of remote server] ********************************************************************************************************************************************************************************************
fatal: [ip]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'crashkernel' is undefined\n\nThe error appears to be in 'status.yaml': line 5, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n  tasks:\n  - name: Get content of remote server\n    ^ here\n"}

++++++++++++++++

또한 시도 yamllint:

$ yamllint status.yaml
status.yaml
  3:11      warning  truthy value should be one of [false, true]  (truthy)
  6:81      error    line too long (89 > 80 characters)  (line-length)

답변1

crashkernel그 자체는 사실이 아니며 ansible_proc_cmdline사실의 자식이므로 다음을 사용하십시오.

---
- hosts: all
  become: yes
  tasks:
  - name: Get content of remote server
    shell: echo system {{ inventory_hostname }} {{ ansible_proc_cmdline['crashkernel'] }} {{ ansible_os_family }}

ansible을 사용할 수 있습니다.디버그echo원격 측에 메시지를 전달하는 대신 메시지를 인쇄하는 모듈:

---
- hosts: all
  become: yes
  tasks:
  - name: Get content of remote server
    debug: 
      msg: "system {{ inventory_hostname }} {{ ansible_proc_cmdline['crashkernel'] }} {{ ansible_os_family }}"

또한 다음을 사용할 수 있습니다.사실 수집호스트에 대한 정보를 JSON 데이터가 포함된 파일로 수집하기 위한 모듈:

ansible localhost -m Gather_facts --tree /tmp/facts

그런 다음 원하는 프로그래밍 언어나 유사한 도구를 사용하십시오.원하는 정보를 추출하세요.

jq '.ansible_facts.ansible_proc_cmdline.crashkernel' /tmp/facts/localhost

관련 정보