Команды 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