循环所有GCP实例磁盘

问题描述 投票:0回答:1

我有一个 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
/
之后的最后一个字符串) .

谢谢!

ansible
1个回答
0
投票

我找到了一种循环遍历所有磁盘的方法:

    vars:   
      disk_info: "{{ item }}"
    loop: "{{ server_reg.resources[0].disks }}"

display_disk_info.yml
中,我可以显示
deviceName
source
名称,并进行比较。

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.