YAMLで生成されたAnsibleファクトのいくつかの情報が必要です。しかし、エラーが発生します。私の要件は、1行で出力を取得することです。これにより、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