コンテキスト:異なるストレージコントローラーのディスクを組み合わせたシステムがあるため、ディスクの種類ごとに目的が異なります。私は、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"
プレイブックのこのタスクフラグメントは、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つのデバッグステートメントは、それぞれすべてのデバイス値とデバイス名のみをダンプします。