web-dev-qa-db-ja.com

Ansible:Ansibleファクトを使用して、ストレージコントローラーの値に基づいてディスクデバイスを取得し、デバイスを変数として設定するにはどうすればよいですか?

コンテキスト:異なるストレージコントローラーのディスクを組み合わせたシステムがあるため、ディスクの種類ごとに目的が異なります。私は、Ansibleと学習に慣れていません。各タイプのコントローラーからディスクを取得してセットアップできるようにするプレイブックを作成します。

例以下は# 'filter = ansible_devices *'からの出力例です... sdzデバイスはSATAコントローラーからのものです。私の他のホストでは、常にsdzであるとは限らないため、デバイスに「ホスト」:「SATAコントローラー」がある場合は、デバイス名を取得して変数に格納します。 ansible_devices辞書をトラバースし、一致するキー( "Host": "SATA controller")を見つけて、デバイスとなる親のdictを取得する必要があるのではないかと考えています。それを行う方法はありますか..またはより簡単な方法はありますか? :)

"sdz": {
            "holders": [
                "mpathz"
            ],
            "Host": "SATA controller: Intel Corporation C610/X99 series chipset 6-Port SATA Controller [AHCI mode] (rev 05)",
            "links": {
                "ids": [
                    "ata-SAMSUNG_MZ7GE960HMHP-00003_S1Y2NYAFC02269",
                    "wwn-0x50025388003aeb2a"
                ],
                "labels": [],
                "masters": [
                    "dm-19"
                ],
                "uuids": []
            },
            "model": "SAMSUNG MZ7GE960",
            "partitions": {},
            "removable": "0",
            "rotational": "0",
            "sas_address": null,
            "sas_device_handle": null,
            "scheduler_mode": "cfq",
            "sectors": "1875385008",
            "sectorsize": "512",
            "serial": "S1Y2NYAFC02269",
            "size": "894.25 GB",
            "support_discard": "512",
            "vendor": "ATA",
            "virtual": 1,
            "wwn": "0x50025388003aeb2a"
5
comet003

プレイブックのこのタスクフラグメントは、ansible_devicesはすでに変数として設定されています

 tasks:

    - name: get device name
      set_fact:
        device_name: "{{ item.key }}"
      no_log: True
      with_dict: "{{ ansible_devices }}"
      when: "item.value.Host.startswith('SATA')"

    - name: show all values for selected device name
      debug: var=ansible_devices[device_name]

    - name: show only device name
      debug: var=device_name

Set_factはデバイス名を取得します。 2つのデバッグステートメントは、それぞれすべてのデバイス値とデバイス名のみをダンプします。

6
Rob H