Где использовать
Специальные команды (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
- создаст пользователя usernameansible web -m service -a "name=nginx state=restarted" -i inventory/static.yml
- перезапустит сервисnginx
ansible web -m ping -i inventory/static.yml
- проверить доступность всех хостов
Комментарии