Модуль Ansible File

AnsibleAnsibleBeginner

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (LabEx) вы познакомитесь с модулем Ansible File, который позволяет управлять файлами и каталогами на удаленных хостах. Модуль File предоставляет широкий спектр функций, таких как создание, удаление, изменение прав доступа и проверка существования файлов и каталогов.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ansible(("Ansible")) -.-> ansible/ModuleOperationsGroup(["Module Operations"]) ansible(("Ansible")) -.-> ansible/PlaybookEssentialsGroup(["Playbook Essentials"]) ansible/ModuleOperationsGroup -.-> ansible/debug("Test Output") ansible/ModuleOperationsGroup -.-> ansible/file("Manage Files/Directories") ansible/ModuleOperationsGroup -.-> ansible/shell("Execute Shell Commands") ansible/ModuleOperationsGroup -.-> ansible/stat("File Statistics") ansible/ModuleOperationsGroup -.-> ansible/template("Generate Files from Templates") ansible/PlaybookEssentialsGroup -.-> ansible/playbook("Execute Playbook") subgraph Lab Skills ansible/debug -.-> lab-289654{{"Модуль Ansible File"}} ansible/file -.-> lab-289654{{"Модуль Ansible File"}} ansible/shell -.-> lab-289654{{"Модуль Ansible File"}} ansible/stat -.-> lab-289654{{"Модуль Ansible File"}} ansible/template -.-> lab-289654{{"Модуль Ansible File"}} ansible/playbook -.-> lab-289654{{"Модуль Ansible File"}} end

Создание файла на удаленном хосте

На этом шаге вы создадите файл на удаленном хосте с использованием модуля 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!