我有一个 GCP 项目中的一长串实例。我想创建一个小的 Ansible 剧本来遍历实例,列出连接到每个实例的所有磁盘,然后找出
deviceName
和磁盘名称 (source
),找出那些不匹配的磁盘(有些磁盘是附加到实例时给出不同的 deviceName
)。
我可以使用 Ansible 模块来找出
instance_info
:
22 - name: get instance info again
23 gcp_compute_instance_info:
24 zone: us-central1-a
25 filters:
26 - name = "{{ machine1 }}"
27 project: production-project
28 auth_kind: "{{ gcp_cred_kind }}"
29 service_account_file: "{{ gcp_cred_file }}"
30 register: server_reg
寄存器输出的磁盘部分如下所示:
ok: [localhost] => {
"msg": {
"autoDelete": false,
"boot": false,
"deviceName": "test-server",
"diskSizeGb": "100",
"index": 1,
"interface": "SCSI",
"kind": "compute#attachedDisk",
"mode": "READ_WRITE",
"source": "https://www.googleapis.com/compute/v1/projects/stl-production-project/zones/us-central1-a/disks/test-server",
"type": "PERSISTENT"
}
}
ok: [localhost] => {
"msg": {
"autoDelete": false,
"boot": false,
"deviceName": "hahahaha",
"diskSizeGb": "100",
"index": 1,
"interface": "SCSI",
"kind": "compute#attachedDisk",
"mode": "READ_WRITE",
"source": "https://www.googleapis.com/compute/v1/projects/production-project/zones/us-central1-a/disks/test-data",
"type": "PERSISTENT"
}
}
第一个磁盘的
deviceName
和 source
名称匹配,但第二个磁盘不匹配。
如何创建可以循环连接到每个实例的所有磁盘的剧本,因为每个实例将具有不同数量的磁盘,然后仅显示
deviceName
和 source
(/
之后的最后一个字符串) .
谢谢!
我找到了一种循环遍历所有磁盘的方法:
vars:
disk_info: "{{ item }}"
loop: "{{ server_reg.resources[0].disks }}"
在
display_disk_info.yml
中,我可以显示deviceName
和source
名称,并进行比较。
谢谢!