Ansible - один из лучших доступных инструментов автоматизации, предлагающий простые, интуитивно понятные и мощные инструменты для выполнения задач автоматизации в современном мире.
Для большинства задач автоматизации вам нужно будет создавать каталоги, особенно при установке различных инструментов и приложений, резервного копирования и восстановления. Хотя вы можете выполнять эти задачи с помощью автоматизированного скрипта, Ansible обеспечивает лучшую функциональность, позволяя создавать каталоги на указанных хостах.
В этом руководстве показано, как использовать модуль файла Ansible для создания, удаления и изменения разрешений на каталог для указанных хостов.
Как создать каталог в Ansible
Для создания каталога в Ansible можно использовать любой из следующих методов:
- Необработанная команда Ansible с командным модулем
- Файловый модуль в пьесе Ansible
Чтобы создать каталог в Ansible с помощью командного модуля, введите команду, показанную ниже:
$ ansible all -m command -a "mkdir ~ / backups"После ввода вышеуказанной команды вы должны получить результат, показанный ниже:
Введите кодовую фразу для ключа '/ home / user /.ssh / id_rsa ':[ВНИМАНИЕ]: рассмотрите возможность использования файлового модуля с состоянием = каталог вместо запуска mkdir. Если вам нужно использовать команду из-за того, что файла недостаточно, вы можете добавить 'warn: false' в эту командную задачу или установить 'command_warnings = False' в недоступном.cfg, чтобы избавиться от этого сообщения.
35 год.222.210.12 | ИЗМЕНЕНО | rc = 0 >>
Убедитесь, что ваш инвентарь хостов Ansible в / etc / ansible / hosts содержит правильную информацию о ваших удаленных хостах.
Хотя командный модуль прост в использовании на одном хосте Ansible, он становится очень неэффективным при работе с несколькими хостами с разными каталогами и задачами.
Чтобы противостоять этому недостатку, мы будем использовать модуль Ansible file и создадим playbook, содержащий хосты, которые мы хотим использовать, и каталоги, которые мы хотим создать.
ПРИМЕЧАНИЕ: Файловый модуль также можно использовать как отдельную команду в Ansible, но он работает так же, как командный модуль.
Чтобы использовать Ansible playbook, создайте файл YAML и введите следующие записи для создания каталога:
- хосты: все задачи:- имя: Модуль файлов Ansible создает каталог
файл:
путь: ~ / резервные копии
состояние: каталог
Сохраните файл и используйте ansible-playbook для создания каталогов:
ansible-playbook mkdir.ymlЭто должно привести к выводу, подобному приведенному ниже, указывая, что действия были успешно выполнены с использованием указанного файла playbook.
Играть все] ********************************************** ************************************************* *************ЗАДАЧА [Сбор фактов] ******************************************* ************************************************ **
Введите кодовую фразу для ключа '/ home / user /.ssh / id_rsa ':
ок: [35.222.210.12]
ЗАДАЧА [Создание каталога модуля Ansible] **************************************** **********************************
ок: [35.222.210.12]
ВОСПРОИЗВЕДЕНИЕ ****************************************************************************************************************************** ************************************************* ***********
35 год.222.210.12: ok = 2 изменено = 0 недоступно = 0 не удалось = 0 пропущено = 0 восстановлено = 0 игнорируется = 0
Как создать несколько каталогов с элементами
Плейбуки Ansible также позволяют создавать несколько каталогов с помощью оператора with_items в файле YAML.
Например, чтобы создать резервные копии для трех служб, MySQL, репозитория и конфигурации, вы можете создать задачу, показанную в файле YAML ниже:
- хосты: все задачи:- name: Ansible создает несколько каталогов with_items
файл:
путь: ~ / backups / item
состояние: каталог
with_items:
- mysql
- 'репозиторий'
- 'config'
Сохраните указанный выше файл и запустите его с помощью ansible-playbook.
$ ansible-playbook mkdir_multi.yml ИГРАТЬ [все] ******************************************** ************************************************ ************************************************ ************************************************* ***ЗАДАЧА [Сбор фактов] ******************************************* ************************************************* ************************************************* *****************************************
Введите кодовую фразу для ключа '/ home / user /.ssh / id_rsa ':
ок: [35.222.210.12]
ЗАДАЧА [Ansible создает несколько каталогов with_items] **************************************** ************************************************ ************************************************ *************
изменено: [35.222.210.12] => (item = mysql)
изменено: [35.222.210.12] => (item = репозиторий)
изменено: [35.222.210.12] => (item = config)
ВОСПРОИЗВЕДЕНИЕ ******************************************************************************************************************** ************************************************ ************************************************ ************************************************
35 год.222.210.12: нормально = 2 изменено = 1 недоступен = 0 сбой = 0 пропущен = 0 спасен = 0 проигнорирован = 0
Приведенный выше сценарий должен создать несколько каталогов, таких как ~ / backups / mysql, ~ / backups / repository и ~ / backups / config.
$ ls -laВывод списка каталогов показан ниже:
всего 0drwxrwxr-x. 5 debian debian 51 6 марта, 17:26 .
drwx------. 6 debian debian 117 6 марта 17:26…
drwxrwxr-x. 2 debian debian 6 мар 6, 17:26 конфигурация
drwxrwxr-x. 2 debian debian 6 марта, 17:26 mysql
drwxrwxr-x. 2 debian debian 6 мар 6 17:26 репозиторий
Как установить разрешения для каталога
Ansible позволяет указать разрешения для каталога с помощью директивы режима. Рассмотрим следующую книгу, которая создает каталог и устанавливает разрешения:
- хосты: всезадачи:
- имя: Ansible создать каталог и установить разрешения
файл:
путь: / резервные копии
состояние: каталог
режим: "u = rw, g = wx, o = rwx"
стать: да
В приведенной выше записи мы создали каталог в /. Нам также нужно было стать пользователем root, поэтому запись стала: yes.
разрешение $ ansible-playbook.yml ИГРАТЬ [все] ******************************************** ************************************************ ************************************************* ************************************************* ***ЗАДАЧА [Сбор фактов] ******************************************* ************************************************* ************************************************* *****************************************
Введите кодовую фразу для ключа '/ home / user /.ssh / id_rsa ':
ок: [35.222.210.12]
ЗАДАЧА [Ansible создать каталог и установить разрешения] **************************************** ************************************************* ************************************************ ****************
изменено: [35.222.210.12]
ВОСПРОИЗВЕДЕНИЕ ******************************************************************************************************************** ************************************************* ************************************************ ************************************************
35 год.222.210.12: нормально = 2 изменено = 1 недоступен = 0 сбой = 0 пропущен = 0 спасен = 0 проигнорирован = 0
Если вы просмотрите разрешения созданного нами каталога, вы увидите следующее:
$ ls -lrt / | grep резервные копииРезультат показан ниже:
drw - wxrwx. 2 root root 6 мар 6 17:36 бэкапыКак рекурсивно изменять разрешения в каталоге
Чтобы рекурсивно изменить права доступа к каталогу и его файлам, просто укажите рекурсивную запись, как показано ниже:
- хосты: всезадачи:
- имя: Ansible создать каталог и установить разрешения
файл:
путь: / резервные копии
состояние: каталог
режим: "u = rw, g = wx, o = rwx"
рекурсивный: да
стать: да
Как установить разрешения в нескольких каталогах
Настройка разрешений для нескольких каталогов в Ansible также проста, как несколько строк записей. Рассмотрим следующую пьесу.
- хосты: всезадачи:
- name: Ansible создает несколько каталогов с разрешениями
файл:
путь: "элемент.дорожка "
режим: "item.Режим"
состояние: каталог
with_items:
- путь: '~ / backups / mysql', режим: '0777'
- путь: '~ / backups / repository', режим: '0755'
- путь: '~ / backups / config', режим: '0707'
Как удалить каталог в Ansible
Чтобы удалить каталог и все его содержимое с помощью книги воспроизведения Ansible, укажите состояние как отсутствует, как показано ниже:
- хосты: всезадачи:
- имя: Ansible удалить каталог
файл:
путь: / резервные копии
состояние: отсутствует
стать: да
Эта команда удалит каталог и все дочерние файлы и каталоги.
ПРИМЕЧАНИЕ: Убедитесь, что у вас есть разрешения для каталога, над которым вы работаете.
Как создать каталог с отметкой времени
В некоторых случаях вам может потребоваться создать каталог с прикрепленной к нему меткой времени, что может быть очень полезно, особенно при создании резервных копий. Чтобы создать каталог с отметкой времени, мы можем использовать переменную ansible_date_time.
Рассмотрим следующий сценарий:
- хосты: всезадачи:
- name: Ansible добавить метку времени в каталог
файл:
путь: "/ backups / mysql ansible_date_time.Дата"
состояние: каталог
режим: «0777»
стать: да
После того, как вы запустите playbook, у вас будет каталог с меткой времени.
$ ls -lСписок каталогов должен быть таким, как показано ниже:
всего 0 drwxrwxrwx. 2 root root 6 мар 6 18:03 mysql2021-03-06ПРИМЕЧАНИЕ: Чтобы избежать ошибок, всегда проверяйте синтаксис файла YAML, который вы собираетесь использовать в Ansible.
Заключение
Это руководство показало вам, что работа с модулями Ansible очень проста и интуитивно понятна, что упрощает автоматизацию сложных задач. Используя модуль Ansible file, вы можете создать один или несколько каталогов и добавить разрешения для каждого из них. Вы также можете использовать тот же модуль для удаления каталога. Для получения дополнительной информации о том, как использовать модуль Ansible file, проверьте официальную документацию на странице ресурсов.