Практические применения
Модуль Ansible Stat может быть использован в различных практических приложениях для автоматизации задач управления инфраструктурой. Вот несколько примеров:
Проверка существования файла и его разрешений
Одним из распространенных случаев использования модуля Stat является проверка существования и разрешений файла или каталога. Это может быть полезно, когда необходимо убедиться, что критически важный файл или каталог существует и имеет правильные разрешения перед выполнением других задач. Вот пример:
- hosts: all
tasks:
- name: Check if a file exists
ansible.builtin.stat:
path: /etc/hosts
register: hosts_file
- name: Fail if the file does not exist
fail:
msg: "/etc/hosts file does not exist"
when: not hosts_file.stat.exists
- name: Ensure file permissions
file:
path: /etc/hosts
owner: root
group: root
mode: "0644"
when: hosts_file.stat.exists
В этом примере сначала с помощью модуля Stat проверяется существование файла /etc/hosts
. Если файл не существует, плейбук завершится с ошибкой и соответствующим сообщением. Если файл существует, плейбук гарантирует, что файл имеет правильного владельца и разрешения.
Условные задачи на основе атрибутов файла
Модуль Stat также может быть использован для принятия решений на основе атрибутов файла или каталога. Например, можно использовать модуль Stat для проверки времени изменения файла и выполнения различных действий в зависимости от того, был ли файл обновлен. Вот пример:
- hosts: all
tasks:
- name: Get information about a configuration file
ansible.builtin.stat:
path: /etc/app/config.yml
register: config_file
- name: Update configuration file
template:
src: config.yml.j2
dest: /etc/app/config.yml
when: config_file.stat.mtime < (ansible_date_time.epoch | int - 3600)
В этом примере модуль Stat используется для получения времени изменения файла /etc/app/config.yml
. Если файл не был изменен за последний час (3600 секунд), плейбук обновляет конфигурационный файл с использованием шаблона Jinja2.
Операции по резервному копированию и восстановлению
Модуль Stat также может быть использован для выполнения операций по резервному копированию и восстановлению. Например, можно использовать модуль Stat для проверки размера файла или каталога перед его резервным копированием, а затем использовать ту же информацию для проверки целостности резервной копии. Вот пример:
- hosts: all
tasks:
- name: Get information about a directory
ansible.builtin.stat:
path: /var/www/html
register: web_dir
- name: Backup web directory
archive:
path: /var/www/html
dest: /backups/web_dir.tar.gz
- name: Verify backup integrity
ansible.builtin.stat:
path: /backups/web_dir.tar.gz
register: backup_file
assert:
that:
- backup_file.stat.size == web_dir.stat.size
msg: "Backup file size does not match the original directory size"
В этом примере модуль Stat используется для получения размера каталога /var/www/html
перед созданием архива резервной копии. После создания резервной копии модуль Stat снова используется для проверки размера файла резервной копии, чтобы убедиться, что процесс резервного копирования прошел успешно.
Используя модуль Ansible Stat в своих плейбуках, вы можете автоматизировать широкий спектр задач управления инфраструктурой, повысить надежность своих систем и упростить общий рабочий процесс.