Введение
В этом лабораторном занятии (LabEx) вы познакомитесь с модулем Ansible File, который позволяет управлять файлами и каталогами на удаленных хостах. Модуль File предоставляет широкий спектр функций, таких как создание, удаление, изменение прав доступа и проверка существования файлов и каталогов.
Создание файла на удаленном хосте
На этом шаге вы создадите файл на удаленном хосте с использованием модуля Ansible File.
Сначала создайте новый файл Ansible playbook с именем /home/labex/project/file-module-playbook.yaml и откройте его в текстовом редакторе.
Добавьте следующее содержимое в файл playbook:
- hosts: localhost
tasks:
- name: Create a file on remote host
file:
path: /home/labex/file.txt
state: touch
file: Модуль Ansible для управления файловой системой.path: Указывает путь к файлу, в данном случае/home/labex/file.txt.state: Указывает состояние файла. Здесьtouchозначает, что файл будет создан, если он не существует, или обновлен с учетом времени доступа и модификации, если он уже существует.
Цель этого playbook - создать файл с именем file.txt на удаленном хосте.
Затем запустите playbook с помощью следующей команды:
ansible-playbook file-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 [Create a file on remote host] ********************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Наконец, убедитесь, что файл file.txt был создан по указанному пути на удаленном хосте.
ll /home/labex/file.txt
Пример вывода:
-rw-rw-r-- 1 labex labex 0 Mar 10 03:12 file.txt
Вы увидите сообщение, которое указывает, что /home/labex/file.txt был успешно создан.
Управление правами доступа к файлу
На этом шаге вы узнаете, как управлять правами доступа к файлам на удаленном хосте с использованием модуля Ansible File.
Сначала измените существующий файл playbook, удалив все содержимое и добавив следующее содержимое в файл playbook:
- hosts: localhost
tasks:
- name: Set file permissions
file:
path: /home/labex/file.txt
mode: "0644"
file: Модуль Ansible для управления файловой системой.path: Указывает путь к файлу, в данном случае/home/labex/file.txt.mode: Этот параметр используется для установки режима прав доступа к файлу. Замените"0644"на желаемый режим прав доступа к файлу. Для получения дополнительной информации о режимах прав доступа обратитесь к документации по chmod.
Цель этого playbook - установить права доступа к файлу /home/labex/file.txt на 0644.
Затем запустите playbook с помощью следующей команды:
ansible-playbook file-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 [Set file permissions] ****************************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Наконец, убедитесь, что права доступа к файлу установлены в соответствии с указанными значениями на удаленном хосте.
ll /home/labex/file.txt
Пример вывода:
-rw-r--r-- 1 labex labex 0 Mar 10 03:12 /home/labex/file.txt
Здесь -rw-r--r-- указывает, что режим доступа к файлу /home/labex/file.txt был успешно установлен на 0644.
Удаление файла на удаленном хосте
На этом шаге вы узнаете, как удалить файл на удаленном хосте с использованием модуля Ansible File.
Сначала измените существующий файл playbook, удалив все его содержимое и добавив следующее:
- hosts: localhost
tasks:
- name: Delete a file on remote host
file:
path: /home/labex/file.txt
state: absent
file: Модуль Ansible для управления файловой системой.path: Указывает путь к файлу, который необходимо удалить, то есть/home/labex/file.txt.state: Этот параметр указывает, что файл должен быть в состоянииabsent(отсутствовать). Таким образом, цель задачи - удалить файл по указанному пути.
Цель данного playbook - удалить файл /home/labex/file.txt на удаленном хосте.
Затем запустите playbook с помощью следующей команды:
ansible-playbook file-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 [Delete a file on remote host] ********************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Наконец, убедитесь, что файл file.txt был удален и больше не существует на удаленном хосте.
ll /home/labex/file.txt
Пример вывода:
ls: cannot access '/home/labex/file.txt': No such file or directory
Это сообщение означает, что файл /home/labex/file.txt был успешно удален.
Проверка существования файла
На этом шаге вы узнаете, как проверить существование файла на удаленном хосте с использованием модуля Ansible File.
Сначала измените существующий файл playbook, удалив все его содержимое и добавив следующее:
- hosts: localhost
tasks:
- name: Check file existence on remote host
stat:
path: /home/labex/file.txt
register: file_info
- name: Print file existence
debug:
msg: "File exists: {{ file_info.stat.exists }}"
stat: Это один из модулей Ansible для получения информации о статусе файла или каталога.path: Указывает путь к файлу, существование которого нужно проверить, то есть/home/labex/file.txt.register: Сохраняет результат выполнения модуля в переменнуюfile_infoс использованием ключевого слова register.debug: Это один из модулей Ansible, который выводит отладочную информацию.msg: Использует модульdebugдля вывода сообщения с информацией о существовании файла, которая извлекается черезfile_info.stat.exists.
Цель данного playbook - проверить существование файла /home/labex/file.txt на удаленном хосте и вывести информацию на стандартный вывод.
Затем запустите playbook с помощью следующей команды:
ansible-playbook file-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 [Check file existence on remote host] *************************************
ok: [localhost]
TASK [Print file existence] ****************************************************
ok: [localhost] => {
"msg": "File exists: False"
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Наконец, посмотрите на вывод, чтобы узнать, существует ли файл file.txt на удаленном хосте.
Сообщение "msg": "File exists: False" означает, что файл /home/labex/file.txt не существует.
Резюме
Поздравляем! Вы успешно завершили лабораторную работу по модулю Ansible File. Вы научились создавать файлы и каталоги, управлять правами доступа к файлам, удалять файлы и проверять существование файлов на удаленных хостах с использованием модуля File.
Модуль File - это мощный инструмент в Ansible, который позволяет выполнять различные операции, связанные с файлами, во время автоматических задач. Теперь вы можете уверенно использовать модуль File в своих Ansible playbook для эффективного управления файлами и каталогами.
Продолжайте изучать документацию по Ansible и другие модули, чтобы расширить свои знания и улучшить свои навыки автоматизации. Удачи в работе с Ansible!


