Введение

В этом лабораторном задании вы изучите модуль Ansible Stat, который позволяет собирать информацию о файлах и директориях на удаленных узлах. Модуль Stat предоставляет различные атрибуты и информацию, такие как размер файла, владелец, права доступа и метки времени модификации.

Получить информацию о файле

В этом шаге вы будете использовать модуль Ansible Stat для сбора информации о файле на удаленном узле.

Сначала создайте новый файл playbook Ansible с именем /home/labex/project/stat-module-playbook.yaml и откройте его в текстовом редакторе.
Добавьте следующее содержимое в файл playbook:

- hosts: localhost
  tasks:
    - name: Get file information
      stat:
        path: /home/labex/project/file.txt
      register: file_info

    - name: Print file information
      debug:
        msg: |
          File size: {{ file_info.stat.size }}
          Ownership: {{ file_info.stat.uid }}:{{ file_info.stat.gid }}
          Permissions: {{ file_info.stat.mode }}
  • hosts: Это задает целевой узел, на котором будет выполняться playbook. В данном случае playbook будет выполняться на локальном узле, так как целевой узел — localhost.
  • tasks: Это список задач для выполнения.
  • name: Это описательное имя задачи, которое идентифицирует ее назначение.
  • stat: Этот модуль Ansible собирает информацию о файле на удаленном узле, указанном параметром path.
  • register: Сохраняет вывод модуля stat в переменную с именем file_info для последующего использования.
  • debug: Выводит отладочную информацию во время выполнения playbook.
  • msg: Выводит сообщение с информацией о файле, полученной с использованием модуля stat, включая размер файла, владение (UID и GID) и права доступа.

Кратко говоря, этот playbook предназначен для получения информации о конкретном файле, расположенном в /home/labex/project/file.txt на локальном узле, и вывода различных подробностей, таких как размер, владение и права доступа.

Затем создайте файл с именем file.txt в директории /home/labex/project.

echo "This is the content of the file." > /home/labex/project/file.txt

Наконец, запустите playbook с помощью следующей команды:

ansible-playbook stat-module-playbook.yaml

Обратите внимание на вывод, чтобы увидеть размер файла, владение и права доступа указанного файла.
Пример вывода:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Get file information] ****************************************************
ok: [localhost]

TASK [Print file information] **************************************************
ok: [localhost] => {
    "msg": "File size: 33\nOwnership: 5000:5000\nPermissions: 0664\n"
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Проверить существование файла

В этом шаге вы будете использовать модуль Ansible Stat для проверки существования файла на удаленном узле.

Сначала измените существующий файл playbook, удалив все содержимое и добавив следующее содержимое в файл playbook:

- hosts: localhost
  tasks:
    - name: Check file existence on remote host
      stat:
        path: /home/labex/project/file.txt
      register: file_info

    - name: Print file existence
      debug:
        msg: "File exists: {{ file_info.stat.exists }}"
  • hosts: Это задает целевой узел, на котором будет выполняться playbook. В данном случае playbook будет выполняться на локальном узле, так как целевой узел — localhost.
  • tasks: Это список задач для выполнения.
  • name: Это описательное имя задачи, которое идентифицирует ее назначение.
  • stat: Этот модуль Ansible собирает информацию о файле на удаленном узле, указанном параметром path.
  • register: Сохраняет вывод модуля stat в переменную с именем file_info для последующего использования.
  • debug: Выводит отладочную информацию во время выполнения playbook.
  • msg: Выводит сообщение, указывающее, существует ли файл или нет, на основе информации, полученной с использованием модуля stat.

Кратко говоря, этот playbook предназначен для проверки существования конкретного файла, расположенного в /path/on/remote/host/file.txt на локальном узле, и вывода сообщения о том, существует ли файл или нет.

Затем запустите playbook с помощью следующей команды:

ansible-playbook stat-module-playbook.yaml

Обратите внимание на вывод, чтобы увидеть, существует ли файл file.txt на удаленном узле.
Пример вывода:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Check file existence on remote host] *************************************
ok: [localhost]

TASK [Print file existence] ****************************************************
ok: [localhost] => {
    "msg": "File exists: True"
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Получить метку времени модификации файла

В этом шаге вы будете использовать модуль Ansible Stat для получения метки времени модификации файла на удаленном узле.

Сначала измените существующий файл playbook, удалив все содержимое и добавив следующее содержимое в файл playbook:

- hosts: localhost
  tasks:
    - name: Get file modification timestamp
      stat:
        path: /home/labex/project/file.txt
      register: file_info

    - name: Print file modification timestamp
      debug:
        msg: "File modification timestamp: {{ file_info.stat.mtime }}"
  • hosts: Это задает целевой узел, на котором будет выполняться playbook. В данном случае playbook будет выполняться на локальном узле, так как целевой узел — localhost.
  • tasks: Это список задач для выполнения.
  • name: Это описательное имя задачи, которое идентифицирует ее назначение.
  • stat: Этот модуль Ansible собирает информацию о файле на удаленном узле, указанном параметром path.
  • register: Сохраняет вывод модуля stat в переменную с именем file_info для последующего использования.
  • debug: Выводит отладочную информацию во время выполнения playbook.
  • msg: Выводит сообщение, содержащее метку времени модификации файла, полученную с использованием модуля stat.

Кратко говоря, этот playbook предназначен для получения метки времени модификации конкретного файла, расположенного в /home/labex/project/file.txt на локальном узле, и вывода этой метки времени.

Затем запустите playbook с помощью следующей команды:

ansible-playbook stat-module-playbook.yaml

Обратите внимание на вывод, чтобы увидеть метку времени модификации файла file.txt в человекочитаемом формате.
Пример вывода:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Get file modification timestamp] *****************************************
ok: [localhost]

TASK [Print file modification timestamp] ***************************************
ok: [localhost] => {
    "msg": "File modification timestamp: 1710555624.2304714"
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Резюме

Поздравляем! Вы успешно завершили лабораторную работу по модулю Ansible Stat. Вы узнали, как собирать информацию о файлах, проверять существование файлов и получать метку времени модификации с использованием модуля Stat в Ansible.

Модуль Stat - это мощный инструмент, который позволяет собирать различные атрибуты и информацию о файлах и директориях на удаленных узлах. Теперь вы можете использовать этот модуль в своих playbook Ansible для выполнения более сложных операций, связанных с файлами, и принятия обоснованных решений на основе собранной информации.

Продолжайте изучать документацию по Ansible и экспериментировать с разными модулями, чтобы повысить свои навыки автоматизации. Удачного Ansible-инжиниринга!