ключа словаря задавать переменной?
- name: Host info
ansible.builtin.debug:
msg:
"{{ ansible_fqdn }}":
cpu: "{{ ansible_processor[-1] }}"
cores: "{{ ansible_processor_nproc }}"
ram: "{{ ansible_memtotal_mb }}"
Чтобы получилось:
"msg": {
“my.example.com”: {
"cores": 64,
"cpu": "Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz",
"ram": 257424
}
}
Попробуйте :^) - name: Host info ansible.builtin.debug: msg: | "{{ ansible_fqdn }}": cpu: "{{ ansible_processor[-1] }}" cores: "{{ ansible_processor_nproc }}" ram: "{{ ansible_memtotal_mb }}"
Чего конкретно вы хотите добиться? В выводе msg у вас никакой не словарь, это просто строка.
Так структура ломается, но как вариант затем снова плейнтекст в json перевести. Спасибо!
Хотел удобно перевести json в excel)))
А выглядит вполне как словарь)
вообще странно вывглядит. лучше через template сформировать тогда уж csv и его открыть в excel
ну или lineinfile, по вкусу
И какая связь с переменной в ключе? Изложите полную картину для понимания
Сделайте список не ключей со значениями, а список словаря, в котором fqdn будет как значение, а ключ, например name
Я хочу собрать базовую информацию по хостам, которые ансиблом управляются. Получается такой json: TASK [Host info] ******************************************************************************************************************************************************** ok: [fqdn.com] => { "msg": { "cores": 64, "country": "Netherlands", "cpu": "Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz", "disktype": [ "ssd" ], "env": "prod", "fqdn": “<fqdn>”, "provider": "DataWeb Global Group B.V.", "publicip": “<ip>”, "ram": 257424, "region": "Utrecht" } } Но если бы вынести fqdn в ключ, то в excel сходу было бы что нужно. =) С ансиблом только познакомился, думал такое изи делается. Например инфу по дискам так агрегировал: ansible.builtin.set_fact: diskinfo: "{{ diskinfo | default({}) | combine({item: {'type': 'ssd' if (ansible_devices[item].rotational) else 'hdd', 'model': ansible_devices[item].model, 'size': ansible_devices[item].size}}) }}" И получалось красиво: "diskinfo": { "sda": { "model": "INTEL SSDSC2KG01", "size": "1.75 TB", "type": "ssd" }, "sdb": { "model": "INTEL SSDSC2KG01", "size": "1.75 TB", "type": "ssd" }, "sdc": { "model": "INTEL SSDSC2KG01", "size": "1.75 TB", "type": "ssd" }, "sdd": { "model": "INTEL SSDSC2KG01", "size": "1.75 TB", "type": "ssd" } }, Всем спасибо и хорошего вечера!
Это действительно легко делается. Тем более, если вы умеете в фильтр combine. Тогда вообще неясна суть проблемы.
Обсуждают сегодня