嘿*,
我正在编写一个剧本,它应该在 Windows 注册表中设置一些磁盘属性。 所有磁盘属性都存储在特定供应商文件夹下。每个磁盘文件夹下都有一个我想更改的值。
- Disk&Ven_QEMU&Prod_QEMU_HARDDISK
|- 00000
|- 00001
- Disk&Ven_VMware&Prod_Virtual_disk
|- 00000
我能够确定供应商文件夹以及 HKLM 根目录下的磁盘文件夹:\SYSTEM\CurrentControlSet\Enum\SCSI:
- hosts: some_host
tasks:
- name: Get vendor folders
win_reg_stat:
path: HKLM:\SYSTEM\CurrentControlSet\Enum\SCSI
register: vendors
- name: Get disk folders
win_reg_stat:
path: "HKLM:\\SYSTEM\\CurrentControlSet\\Enum\\SCSI\\{{ item }}"
with_items:
- "{{ vendors.sub_keys }}"
register: disks
- debug:
var: disks.results
输出如下所示:
ok: [some_host] => {
"disks.results": [
{
"ansible_loop_var": "item",
"changed": false,
"exists": true,
"failed": false,
"item": "CdRom&Ven_QEMU&Prod_QEMU_DVD-ROM",
"properties": {},
"sub_keys": [
"000001"
]
},
{
"ansible_loop_var": "item",
"changed": false,
"exists": true,
"failed": false,
"item": "Disk&Ven_QEMU&Prod_QEMU_HARDDISK",
"properties": {},
"sub_keys": [
"000000",
"000001"
]
},
{
"ansible_loop_var": "item",
"changed": false,
"exists": true,
"failed": false,
"item": "Disk&Ven_VMware&Prod_Virtual_disk",
"properties": {},
"sub_keys": [
"000000"
]
}
]
}
我现在有点陷入困境。我正在尝试获取字典或列表来迭代所有这些磁盘文件夹。类似这样的事情:
Disk&Ven_QEMU&Prod_QEMU_HARDDISK: 000000
Disk&Ven_QEMU&Prod_QEMU_HARDDISK: 000001
Disk&Ven_VMware&Prod_Virtual_disk: 000000
有办法实现吗?
感谢和问候 埃里克
最佳答案
例如
- set_fact:
my_list: "{{ my_list|default([]) + [{item.0.item:item.1}] }}"
with_subelements:
- "{{ disks.results }}"
- sub_keys
给出
my_list:
- CdRom&Ven_QEMU&Prod_QEMU_DVD-ROM: '000001'
- Disk&Ven_QEMU&Prod_QEMU_HARDDISK: '000000'
- Disk&Ven_QEMU&Prod_QEMU_HARDDISK: '000001'
- Disk&Ven_VMware&Prod_Virtual_disk: '000000'
无法创建字典,因为在字典中,键必须是唯一的。
关于windows - 从 Ansible 中注册的变量创建字典/列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65668318/