Где использовать

Специальные команды (ad hoc commands) отлично подходят для редко повторяемых задач. Например, если вы хотите отключить все сервера, вы можете выполнить это вызвав одну команду. Специальная команда выглядит так:

ansible [pattern] -m [module] -a "[module options]" -b
  • [pattern] - хосты, к которым будет применяться команда
  • [module] - используемый модуль
  • [module options] - аргументы модуля
  • -b - говорит о том, что для выполнения команды нужно использовать sudo

Пример перезагрузки сервера

Модулем по умолчанию для Ansible является модуль command. Вы можете использовать специальную задачу, чтобы вызвать командный модуль и перезагрузить сервера.

Советую почитать статью чтобы понять, как прописывать сервера, на которых будет выполнятся команда.

Для перезагрузки можно воспользоваться следующей командой, которая перезагрузит все хосты в группе web:

ansible web -a "/sbin/reboot" -i inventory/static.yml -b

При этом ели у вас большее количество серверов выполнение перезагрузки может затянуться, так как Ansible перезагружает каждый хост по очереди. Чтобы ускорить процесс можно воспользоваться параллельным выполнением команд.

ansible web -a "/sbin/reboot" -i inventory/static.yml -f 10 -b

Небольшой список команд

  • ansible web -m setup -i inventory/static.yml - выводит Ansible facts (системная информация о хосте)
  • ansible web -m copy -a "src=/etc/hosts dest=/tmp/hosts mode=600 owner=admin group=admin" -i inventory/static.yml - скопирует файл /etc/hosts на все хосты в группе web и раздаст права на файл
  • ansible web -m yum -a "name=vim state=present" -i inventory/static.yml -b - поставит на все хосты в группе web утилиту vim
  • ansible web -m user -a "name=username password=<crypted password here>"-i inventory/static.yml - создаст пользователя username
  • ansible web -m service -a "name=nginx state=restarted" -i inventory/static.yml - перезапустит сервис nginx
  • ansible web -m ping -i inventory/static.yml - проверить доступность всех хостов