Задание, приведенное ниже, выполняет задание
- set_fact:
sysget_dict: "{{ dict(my_keys2|zip(my_vals)) }}"
vars:
my_keys: "{{ output.stdout_lines|
map('regex_replace','^(.*)\\s*:\\s*(.*)$', '\\1')|
list }}"
my_vals: "{{ output.stdout_lines|
map('regex_replace','^(.*)\\s*:\\s*(.*)$', '\\2')|
list }}"
my_keys2: "{{ my_keys|
map('regex_replace', '[^_a-zA-Z0-9]', '_')|
list }}"
- debug:
var: sysget_dict
- debug:
var: sysget_dict.OS_type
- debug:
var: sysget_dict.RAM
"sysget_dict": {
"CPU_Clock_Freq": "2394.454 MHz",
"Hostname": "dummy",
"IP_Address": "xx.xx.xx.xx",
"No_of_CPU": "4",
"OS_Version": "CentOS Linux 7.7.1908 (Core)",
"OS_type": "Red Hat",
"Product_Version": "1.11.0-2.el7",
"RAM": "7.6377 GB"
}
"sysget_dict.OS_type": "Red Hat"
"sysget_dict.RAM": "7.6377 GB"
Q: "Как использовать эту переменную" sysget_dict "как вход в скрипт, который ожидает ввод словаря? "
A: Записать переменную" sysget_dict "в файл. Например, используйте template
shell> cat sysget.json.j2
{{ sysget_dict|to_nice_json }}
Задача
- template:
src: sysget.json.j2
dest: sysget.json
дает
shell> cat sysget.json
{
"CPU_Clock_Freq": "2394.454 MHz",
"Hostname": "dummy",
"IP_Address": "xx.xx.xx.xx",
"No_of_CPU": "4",
"OS_Version": "CentOS Linux 7.7.1908 (Core)",
"OS_type": "Red Hat",
"Product_Version": "1.11.0-2.el7",
"RAM": "7.6377 GB"
}
Этот файл можно использовать в качестве входных данных для скрипта. Например,
shell> cat test.sh
#!/usr/bin/sh
jq '.' $1
дает
shell> ./test.sh sysget.json
{
"CPU_Clock_Freq": "2394.454 MHz",
"Hostname": "dummy",
"IP_Address": "xx.xx.xx.xx",
"No_of_CPU": "4",
"OS_Version": "CentOS Linux 7.7.1908 (Core)",
"OS_type": "Red Hat",
"Product_Version": "1.11.0-2.el7",
"RAM": "7.6377 GB"
}