Команды ad hoc#
Команды ad hoc Ansible Core - это простые команды, которые позволяют выполнять одноразовые задачи на удаленных хостах без необходимости создания полноценного playbook. Они предназначены для быстрого выполнения операций, таких как установка пакетов, копирование файлов, выполнение команд и другие задачи управления конфигурацией.
Синтаксис:
ansible <pattern> -m <module> -a "<module_options>"
Где:
<pattern>- шаблон, определяющий, к каким хостам будет применяться команда;-m <module>- модуль, который будет использоваться для выполнения задачи. Например:ansible.builtin.ping- проверяет доступность хостов;ansible.builtin.dnf- управляет пакетами на системах, использующих пакетный менеджерdnf;ansible.builtin.copy- копирует файлы на удаленные хосты;ansible.builtin.command- выполняет команды на целевых хостах.
-a "<module_options>"- опции выбранного модуля, передаваемые либо с помощью синтаксиса «ключ=значение», либо в виде строки JSON, начинающейся с{и заканчивающейся на}.
Примеры использования#
Проверка доступности хостов - проверьте, доступны ли все хосты из inventory:
ansible all -m pingУправление пакетами:
установите пакет
httpdна все хосты, входящие в группуwebservers, используя менеджер пакетовdnf:ansible webservers -m dnf -a "name=httpd state=present"обновите пакет
httpdдо последней версии на всех хостах, входящих в группуwebservers:ansible webservers -m ansible.builtin.dnf -a "name=httpd state=latest"
Управление файлами и каталогами:
скопируйте файл с локальной машины на все удаленные хосты:
ansible all -m copy -a "src=<path_to_local_file> dest=<path_to_remote_file>"удалите каталог по указанному пути на всех хостах, входящих в группу
webservers:ansible webservers -m ansible.builtin.file -a "dest=<path_to_directory> state=absent"
Запуск команды - выполните команду
uptimeна всех удаленных хостах и выведите результат в консоль:ansible all -m command -a "uptime"Перезагрузка серверов - перезагрузите все хосты в группе серверов баз данных
db_servers, выполняя перезагрузку на 10 хостах одновременно:ansible db_servers -a "/sbin/reboot" -f 10Управление пользователями и группами:
создайте или измените пользователя
user_1на всех хостах, входящих в группуall, установив ему указанный зашифрованный пароль:ansible all -m ansible.builtin.user -a "name=user_1 password=<encrypted_password>"создайте или измените группу
developersна всех хостах, указанных в inventory:ansible all -m ansible.builtin.group -a "name=developers state=present"
Управление службами:
запустите службу
httpdна всех хостах, входящих в группуwebservers:ansible webservers -m ansible.builtin.service -a "name=httpd state=started"перезапустите службу
httpdна всех хостах, входящих в группуwebservers:ansible webservers -m ansible.builtin.service -a "name=httpd state=restarted"
Сбор facts - соберите и выведите в консоль всю информацию (или facts - обнаруженные переменные системы) обо всех хостах, указанных в inventory:
ansible all -m ansible.builtin.setupРежим проверки (check mode) - в этом режиме Ansible Core не вносит никаких изменений на удаленных хостах, а только проверяет, что произойдет, если команда будет выполнена. Это позволяет увидеть, какие изменения будут сделаны, не изменяя фактическое состояние системы. Запускается с помощью опции
-C. Например, проверьте, что произойдет при попытке скопировать файл/root/bar.txtс содержимымcontentна все хосты, входящие в группуall- без выполнения копирования:ansible all -m copy -a "content=content dest=/root/bar.txt" -C