stat#

Модуль ansible.builtin.stat получает сведения об объектах файловой системы так же, как это делает утилита stat в ОС Linux и Unix.

Особенности работы#

Для работы с узлами под управлением ОС Windows используйте модуль ansible.windows.win_stat.

Параметры#

Модуль принимает следующие параметры:

checksum_algorithm, checksum, checksum_algo#

Алгоритм для вычисления контрольной суммы объекта файловой системы.

Важно

  • Если выбранный алгоритм недоступен на управляющем узле, задача завершится ошибкой.

  • В системах, работающих в режиме, совместимом со стандартом FIPS, алгоритм MD5 может быть недоступен.

Возможные значения:

  • md5;

  • sha1;

  • sha224;

  • sha256;

  • sha384;

  • sha512.

Значение по умолчанию: sha1.

follow#

Порядок обработки символических ссылок.

Возможные значения:

  • false – получение данных о самой ссылке;

  • true – получение данных об объекте файловой системы, на который указывает ссылка.

Значение по умолчанию: false.

get_attributes, attr, attributes#

Получение атрибутов с помощью утилиты lsattr, если она доступна.

Возможные значения:

  • false – выключено;

  • true – включено.

Значение по умолчанию: true.

get_checksum#

Необходимость расчета контрольной суммы объекта файловой системы.

Возможные значения:

  • false – не рассчитывать контрольную сумму;

  • true – рассчитать контрольную сумму.

Значение по умолчанию: true.

get_mime, mime, mime_type, mime-type#

Получение информации о внутренней структуре файла с помощью утилиты file.

При использовании этого параметра в возвращаемое значение по возможности добавляются поля stat.mimetype и stat.charset.

Возможные значения:

  • false – выключено;

  • true – включено.

Значение по умолчанию: true.

path, dest, name#

Обязательный параметр.

Полный путь к объекту файловой системы.

Возвращаемые значения#

В этом списке указаны только возвращаемые значения, специфичные для модуля ansible.builtin.stat.

  • stat.atime – время последнего доступа к объекту файловой системы.

    Условия: успешное выполнение, указанный путь существует и пользователь может получить данные об объекте.

  • stat.attributes – список атрибутов.

    Условия: успешное выполнение, указанный путь существует и пользователь может получить данные об объекте.

  • stat.charset – кодировка файла.

    Условия: успешное выполнение, путь существует, пользователь может получить данные об объекте, используемая версия Python моддерживает это и get_mime=true.

  • stat.checksum – контрольная сумма объекта файловой системы.

    Условия: успешное выполнение, путь существует, пользователь может получить данные об объекте файловой системы, содержимое объекта может быть хешировано и используемый алгоритм доступен в системе.

  • stat.ctime – время последнего обновления или создания метаданных.

    Примечание

    Значение определяется ОС.

    Условия: успешное выполнение, указанный путь существует и пользователь может получить данные об объекте.

  • stat.dev – устройство, на котором находится индексный узел (inode), указывающий на объект файловой системы.

    Условия: успешное выполнение, указанный путь существует и пользователь может получить данные об объекте.

  • stat.executable – наличие у текущего пользователя прав на выполнение объекта файловой системы.

    Условия: успешное выполнение, указанный путь существует и пользователь может получить данные об объекте.

  • stat.exists – существование объекта файловой системы по указанному пути.

    Условия: успешное выполнение.

  • stat.gid – идентификатор группы-владельца (GID) объекта файловой системы.

    Условия: успешное выполнение, указанный путь существует и пользователь может получить данные об объекте.

  • stat.gr_name – название группы-владельца объекта файловой системы.

    Условия: успешное выполнение, указанный путь существует, пользователь может получить данные об объекте, удалось получить название группы-владельца и установленная версия Python поддерживает это.

  • stat.inode – номер индексного узла (inode) объекта файловой системы.

    Условия: успешное выполнение, указанный путь существует и пользователь может получить данные об объекте.

  • stat.isblk – является ли указанный путь блочным устройством.

    Условия: успешное выполнение, указанный путь существует и пользователь может получить данные об объекте.

  • stat.ischr – является ли указанный путь символьным устройством.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.isdir – является ли указанный путь каталогом.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.isfifo – является ли указанный путь именованным конвейером (pipe).

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.isgid – совпадает ли идентификатор основной группы пользователя Ansible с идентификатором группы-владельца объекта файловой системы.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.islnk – является ли указанный путь символической ссылкой.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.isreg – является ли указанный путь обычным (regular) файлом.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.issock – является ли указанный путь сокетом Unix.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.isuid – совпадает ли идентификатор пользователя Ansible с идентификатором пользователя-владельца объекта файловой системы.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.lnk_source – полный путь к объекту файловой системы, на который указывает символическая ссылка.

    Условия: успешное выполнение, путь существует и является символической ссылкой, пользователь может получить данные об объекте.

  • stat.lnk_target – путь символической ссылки.

    Примечание

    Относительные пути не преобразуются в абсолютные.

    Условия: успешное выполнение, путь существует и является символической ссылкой, пользователь может получить данные об объекте.

  • stat.mimetype – сведения о MIME-типе файла.

    Условия: успешное выполнение, путь существует, пользователь может получить данные об объекте, используемая версия Python поддерживает это и get_mime=true.

  • stat.mode – режим доступа к объекту файловой системы в виде числа в восьмеричной системе счисления.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.mtime – время последнего изменения объекта файловой системы.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.nlink – количество ссылок на индексный узел (жестких ссылок).

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.path – полный путь к объекту файловой системы.

    Условия: успешное выполнение и существование пути.

  • stat.pw_name – название учетной записи пользователя-владельца объекта файловой системы.

    Условия: успешное выполнение, путь существует, пользователь может получить данные об объекте, удалось определить название учетной записи и используемая версия Python поддерживает это.

  • stat.readable – имеется ли у текущего пользователя разрешение на чтение объекта файловой системы.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.rgrp – имеется ли у группы-владельца разрешение на чтение объекта файловой системы.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.roth – имеется ли разрешение на чтение объекта файловой системы у пользователей и групп, не являющихся его владельцами.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.rusr – имеется ли у пользователя-владельца разрешение на чтение объекта файловой системы.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.size – размер объекта файловой системы в байтах.

    Примечание

    Для некоторых специальных файлов возвращается количество данных.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.uid – идентификатор пользователя-владельца (UID) объекта файловой системы.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.version – версия или поколение атрибута.

    Условия: успешное выполнение, путь существует, пользователь может получить данные об объекте, утилита lsattr доступна и файловая система поддерживает нужные свойства.

  • stat.wgrp – имеется ли у группы-владельца разрешение на запись.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.woth – имеется ли разрешение на запись у пользователей и групп, не являющихся владельцами объекта файловой системы.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.writeable – имеется ли у пользователя разрешение на изменение пути.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.wusr – имеется ли у пользователя-владельца разрешение на запись.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.xgrp – имеется ли у группы-владельца разрешение на выполнение объекта файловой системы.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.xoth – имеется ли разрешение на выполнение у пользователей и групп, не являющихся владельцами.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

  • stat.xusr – имеется ли у пользователя-владельца разрешение на выполнение объекта файловой системы.

    Условия: успешное выполнение, путь существует и пользователь может получить данные об объекте.

Атрибуты#

Атрибуты определяют функции Ansible, которые может использовать модуль.

Атрибут

Описание

check_mode

Модуль работает в режиме проверки в полном объеме.

diff_mode

Модель не поддерживает режим сравнения.

platform

Модуль поддерживает только POSIX-совместимые ОС.

Примеры#

Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.

Получение информации о файле#

Следующий пример демонстрирует получение сведений о файле:

---
- name: Get /etc/astra_version file info
  ansible.builtin.stat:
    path: /etc/astra_version
  register: astra_version

- name: Show astra_version file stat
  ansible.builtin.debug:
    msg: astra_version

Результат выполнения сценария:

 "astra_version": {
     "changed": false,
     "failed": false,
     "stat": {
         "atime": 1751812252.044,
         "attr_flags": "e",
         "attributes": [
             "extents"
         ],
         "block_size": 4096,
         "blocks": 8,
         "charset": "us-ascii",
         "checksum": "faab3792f6d88b0205da1bfbfd1452f78cf44406",
         "ctime": 1733899434.936,
         "dev": 64514,
         "device_type": 0,
         "executable": false,
         "exists": true,
         "gid": 0,
         "gr_name": "root",
         "inode": 5355,
         "isblk": false,
         "ischr": false,
         "isdir": false,
         "isfifo": false,
         "isgid": false,
         "islnk": false,
         "isreg": true,
         "issock": false,
         "isuid": false,
         "mimetype": "text/plain",
         "mode": "0644",
         "mtime": 1733899434.936,
         "nlink": 1,
         "path": "/etc/astra_version",
         "pw_name": "root",
         "readable": true,
         "rgrp": true,
         "roth": true,
         "rusr": true,
         "size": 6,
         "uid": 0,
         "version": "4100656142",
         "wgrp": false,
         "woth": false,
         "writeable": false,
         "wusr": true,
         "xgrp": false,
         "xoth": false,
         "xusr": false
     }
 }

Проверка разрешений#

Следующий пример демонстрирует проверку владельцев файла /etc/apt/sources.list.d/astra-automation.list:

---
- name: Get /etc/apt/sources.list.d/astra-automation.list file info
  ansible.builtin.stat:
    path: /etc/apt/sources.list.d/astra-automation.list
  register: astra_automation_list

- name: Check owner's user name
  ansible.builtin.fail:
    msg: "The owner of astra-automation.list file must be a root user!"
  when: astra_automation_list.stat.pw_name != 'root'

- name: Check owner's group name
  ansible.builtin.fail:
    msg: "The owner of astra-automation.list file must be a root group!"
  when: astra_automation_list.stat.gr_name != 'root'

Сообщения об ошибках будут выведены только в том случае, когда названия пользователя-владельца и группы-владельца отличаются от root.

Расчет контрольной суммы#

Следующий пример демонстрирует расчет контрольной суммы файла с использованием алгоритма SHA-256:

- name: Calculate kernel checksum
  ansible.builtin.stat:
    path: /boot/initrd.img-6.1.90-1-generic
    checksum_algorithm: sha256
  register: data

- name: Print checksum
  ansible.builtin.debug:
    msg: "Checksum: {{ data.stat.checksum }}"

Результат выполнения сценария:

"msg": "Checksum: a6cab4bae26632c89953bbe51e39a538cafecf1442bd841cbcc56fb5d422d1fc"

Получение данных о блочном устройстве#

Следующий пример демонстрирует получение данных о блочном устройстве /dev/sda1:

- name: Get data for /dev/sda1
  ansible.builtin.stat:
    path: /dev/sda1
  register: dev_sda1_data

- name: Print /dev/sda1 info
  ansible.builtin.debug:
    var: dev_sda1_data

Результат выполнения сценария:

"dev_sda1_data": {
    "changed": false,
    "failed": false,
    "stat": {
        "atime": 1751812074.988,
        "attr_flags": "",
        "attributes": [],
        "block_size": 4096,
        "blocks": 0,
        "charset": "binary",
        "ctime": 1751812074.988,
        "dev": 5,
        "device_type": 64513,
        "executable": false,
        "exists": true,
        "gid": 6,
        "gr_name": "disk",
        "inode": 208,
        "isblk": true,
        "ischr": false,
        "isdir": false,
        "isfifo": false,
        "isgid": false,
        "islnk": false,
        "isreg": false,
        "issock": false,
        "isuid": false,
        "mimetype": "inode/blockdevice",
        "mode": "0660",
        "mtime": 1751812074.988,
        "nlink": 1,
        "path": "/dev/sda1",
        "pw_name": "root",
        "readable": false,
        "rgrp": true,
        "roth": false,
        "rusr": true,
        "size": 0,
        "uid": 0,
        "version": null,
        "wgrp": true,
        "woth": false,
        "writeable": false,
        "wusr": true,
        "xgrp": false,
        "xoth": false,
        "xusr": false
    }
}