Ad-Hoc — это способ, предоставляемый Ansible для быстрого выполнения специальных команд. Это позволяет пользователям выполнять модули Ansible непосредственно из командной строки без использования playbook. Ad-Hoc можно использовать для быстрого тестирования некоторых функций Ansible, временного изменения или запроса информации об атрибутах и т. д.
пример: (демонстрирует, как использовать временную команду adhoc для просмотра файла hosts всех хостов)
ansible all -m shell -a "cat /etc/hosts"
Эта специальная команда использует Ansible для выполнения команды date, просмотра системного времени всех удаленных серверов и подключения к удаленному хосту с указанным именем пользователя username.
Синтаксис Ad-Hoc очень прост, основной формат следующий:
Основной формат этой команды:
ansible <hosts> -m <module> -a "<arguments>"
в:
<hosts>
: Целевой хост или группа хостов, которым необходимо выполнить команду.-m <module>
: модуль Ansible, который необходимо использовать, например, здесь используется модуль оболочки, который используется для выполнения команд оболочки на удаленном хосте.-a "<arguments>"
: параметры, передаваемые модулю, здесь команда «cat /etc/hosts» используется для просмотра содержимого файла hosts на удаленном хосте.
Следовательно, эта команда означает выполнение команды на всех целевых хостах cat /etc/hosts
для просмотра содержимого файла hosts. В этом примере используется модуль оболочки, что означает, что Ansible выполнит команду на удаленном хосте и вернет результат на управляющую машину.
Следует отметить, что shell
при использовании модуля необходимо соблюдать осторожность, поскольку команды, которые он выполняет на удаленном хосте, выполняются в оболочке, что может нести некоторые риски безопасности. Когда необходимо выполнять команды на удаленном хосте, command
рекомендуются более безопасные модули.
Приведенная выше команда Ad-Hoc фактически выполняет модули Ansible, предоставляемые базовой библиотекой Ansible. При выполнении команд Ad-Hoc Ansible динамически создает книгу воспроизведения и отправляет ее на удаленный хост. Этот плейбук содержит модули, которые необходимо выполнить, и соответствующие параметры.
Ansible сначала проверит локальный файл конфигурации Ansible.cfg и файл инвентаризации и определит, какой хост, имя пользователя, пароль и другую информацию следует использовать в соответствии с содержимым этих файлов, а затем динамически сгенерирует playbook в соответствии с параметрами объявления. -Hoc команда. Наконец, Ansible подключается к целевому хосту через SSH, выполняет команды или действия, определенные в playbook, и возвращает результаты в локальную систему.
Это основной принцип Ansible Ad-Hoc. Его преимущество в том, что он может быстро выполнять команды, проверки, отладку и т. д. за короткий промежуток времени без написания плейбука. Однако он менее масштабируем и гибок, чем использование плейбуков.