Получить информацию о файле
В этом шаге вы будете использовать модуль 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