Как мне получить устройство root через Ansible? - PullRequest
1 голос
/ 04 мая 2020

В зависимости от того, с какой системой я запускаю Ansible, устройство root может отличаться. В некоторых системах это / dev / sda. Для других (Raspberry PI) это / dev / mmcblk0. Я хочу, чтобы Ansible посмотрел на какое устройство / было установлено и выяснил его.

Если я посмотрю на факты, собранные модулем установки Ansible, я увижу, что ansible_mounts - это список, и один из элементов списка содержит mount: /.

К сожалению:

  1. Я не уверен, как сказать Ansible, что я ищу для элемента списка, который содержит mount: /
  2. На Raspberry Pi, этот элемент списка показывает device: /dev/root
    • Даже при работе df в системе отображается /dev/root, смонтированный на /
    • /dev/root даже не существует. Очевидно, что что-то осталось от initrd во время процесса загрузки

Есть ли надежный способ точно определить, какое устройство / использует?

1 Ответ

1 голос
/ 04 мая 2020

Задание

    - debug:
        msg: "{{ ansible_mounts|json_query('[?mount == `/`].device') }}"

дает в Ubuntu

    "msg": [
        "/dev/nvme0n1p6"
    ]

Это правильно

shell> df
Filesystem     1K-blocks     Used Available Use% Mounted on
...
/dev/nvme0n1p6  40054040 22358656  15631000  59% /

То же задание дает в RPi Zero с FreeBSD

    "msg": [
        "/dev/ufs/rootfs"
    ]

Это также правильно

shell> df
Filesystem             1024-blocks    Used   Avail Capacity  Mounted on
/dev/ufs/rootfs            7451804 1996912 4858748    29%    /

Результат: переменная ansible_mounts работает, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...