Поиск по сайту:

Руководство по Ansible: специальная команда


На этой странице

  1. Предпосылки
  2. Что будем делать?
  3. Основное использование специальных команд
    1. 1. Основная команда
    2. 2. Фильтровать группу хостов и один хост
    3. 3. Использование SSH-пароля
    4. 4. Повышение привилегий

    1. 1. Загрузить файл на хост
    2. 2. Скачать файл с хоста
    3. Шаг 3. Обновление репозитория и пакетов обновлений

    1. 1. Установить пакет
    2. 2. Удалить пакет
    3. 3. Автоудаление

    1. 1. Запустить службы
    2. 2. Перезапустить службу
    3. 3. Остановить службу

    1. 1. Диск доступен
    2. 2. Использование оперативной памяти
    3. 3. Использование процессора
    4. 4. Открытые порты
    5. 5. Время безотказной работы

    Команда Ad-Hoc — это однострочная доступная команда, которая выполняет одну задачу на целевом хосте. Это позволяет выполнять простую однострочную задачу для одного или группы хостов, определенных в конфигурации файла инвентаризации. Команда Ad-Hoc будет иметь только два параметра: группу хоста, на котором вы хотите выполнить задачу, и модуль Ansible для запуска.

    Команда Ad-Hoc дает вам больше преимуществ для изучения самого ansible. Вы можете выполнять задачи без предварительного создания плейбука, такие как перезагрузка серверов, управление службами, редактирование конфигурации линии, копирование файла только на один хост, установка только одного пакета.

    В этом уроке я покажу базовое использование команды Ansible Ad-Hoc. Я буду использовать команду Ad-Hoc для выполнения простых задач, которые могут понадобиться вам в повседневной жизни в качестве системного администратора.

    Предпосылки

    В этом руководстве мы будем использовать два сервера Ubuntu 18.04 LTS, Bionic Beaver. Сервер ansible получит имя хоста ansible-node с IP-адресом 10.5.5.20, а сервер Provision с предоставлением имени хоста и IP-адресом 10.5.5.21.

    Что мы будем делать?

    1. Базовая специальная команда
    2. Передача файлов
    3. Обновление и обновление
    4. Управление пакетом
    5. Управление службами
    6. Система проверки

    Базовое использование специальных команд

    Во-первых, мы изучим основы использования Ansible Ad-Hoc для управления серверами. Мы изучим базовую команду Ansible Ad-Hoc, используя команду Ad-Hoc с аутентификацией по паролю ssh, повышение привилегий и использование команды Ad-Hoc для группы хостов.

    1. Основная команда

    Основная команда ansible ad-hoc для всех хостов в файле инвентаризации и с использованием модуля ping.

    ansible all -m ping

    • Первый параметр all для всех хостов в файле инвентаризации.
    • Второй параметр внутри опции -m для модуля, запускающего модуль ping.

    Теперь вы получите результат, как показано ниже.

    Команда Ad-Hoc для сервера подготовки была УСПЕШНОЙ без каких-либо изменений, внесенных на сервере, и мы получаем результат модуля ping от pong сервера подготовки.

    2. Фильтровать группу хостов и один хост

    Теперь вы можете использовать команду Ad-Hoc для группы хостов, которые уже определены в файле инвентаризации. Вы можете использовать свой собственный файл инвентаризации или использовать файл инвентаризации по умолчанию /etc/ansible/hosts.

    Ниже приведен пример запуска специальной команды для группы хостов с именем hakase-testing, которые уже определены в файле конфигурации инвентаризации по умолчанию.

    ansible hakase-testing -m setup -a "filter=ansible_distribution*"

    Если вы используете пользовательский файл инвентаризации, добавьте параметр -i после имени файла инвентаризации.

    ansible hakase-testing -i hosts -m setup -a "filter=ansible_distribution*"

    Вы получите тот же результат.

    Теперь, если вы хотите работать с одним хостом в конфигурации инвентаризации, вы можете использовать имя хоста, как показано ниже.

    ansible provision -m setup -a "filter=ansible_distribution*"

    А специальная команда будет выполняться только на сервере обеспечения.

    3. Использование пароля SSH

    Теперь мы выполним команду Ad-Hoc, используя запрашиваемую аутентификацию по паролю ssh. А для этого вам нужно установить на ansible-node дополнительный пакет под названием sshpass.

    Установите пакет sshpass с помощью приведенной ниже команды apt.

    sudo apt install sshpass -y

    Теперь запустите специальную команду и добавьте в конец параметр --ask-pass.

    ansible hakase-testing -m ping --ask-pass

    И вас спросят пароль SSH для сервера.

    Введите свой пароль ssh, и специальная команда будет запущена на сервере.

    4. Повышение привилегий

    Ansible предоставляет функции для повышения привилегий в отношении серверов. Если вы хотите запустить специальную команду от имени пользователя без полномочий root, вы можете использовать параметр --become, чтобы получить привилегии root, и параметр -K, чтобы запросить пароль.

    Запустите специальную команду fdisk -l от имени пользователя hakase с параметром привилегий --become и -K, чтобы запросить пароль SUDO.

    ansible hakase-testing -m shell -a 'fdisk -l' -u hakase --become -K

    Ниже приведен результат.

    Передача файла

    Теперь собирались использовать команду Ad-Hoc для передачи файлов на сервер и с сервера. Мы можем передать файл на сервер подготовки с помощью модуля копирования и загрузить файл с сервера с помощью модуля выборки.

    1. Загрузить файл на хост

    Для этого примера мы собирались запустить специальную команду и с помощью модуля копирования загрузить конфигурацию sudoers для пользователя hakase в каталог /etc/sudoers.d в группе hakase-testing.

    Запустите специальную команду ниже.

    ansible hakase-testing -m copy -a 'src=/home/hakase/hakase-sudo.conf dest=/etc/sudoers.d/hakase owner=root mode=0644' -u hakase --become -K

    Теперь вам будет предложено ввести пароль SUDO для пользователя hakase. Введите пароль, и вы получите результат, как показано ниже.

    Файл был загружен в целевой каталог назначения, и вы получаете измененный результат как истинный.

    2. Загрузите файл с хоста

    Теперь мы собирались использовать специальную команду с модулем fetch для загрузки файла с сервера подготовки на локальный сервер ansible-node.

    Загрузите файл конфигурации /etc/sudoers.d/hakase с сервера подготовки в локальный каталог с именем backup.

    ansible provision -m fetch -a 'src=/etc/sudoers.d/hakase dest=/home/hakase/backup/hakase-sudoers flat=yes'

    И вы получите файл с именем hakase-sudoers в каталоге резервного копирования.

    Шаг 3. Обновите репозиторий и обновите пакеты

    Чтобы обновить и обновить репозиторий серверов Ubuntu, мы можем использовать команду ad-hoc с модулем apt.

    Обновление репозитория на группе hakase-testing.

    ansible hakase-testing -m apt -a 'update_cache=yes' --become

    Теперь обновите репозитории и обновите все пакеты до последней версии, используя опцию upgrade=dist.

    ansible hakase-testing -m apt -a 'upgrade=dist update_cache=yes' --become

    Подождите, пока все пакеты будут обновлены.

    Управление пакетами

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

    1. Установить пакет

    Установите один пакет с помощью специальной команды с модулем apt, как показано ниже.

    ansible hakase-testing -m apt -a 'name=nginx state=latest' --become

    2. Удалить пакет

    Удалите пакет и очистите всю конфигурацию, связанную с пакетом.

    ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes' --become

    3. Автоудаление

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

    ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes autoremove=yes' --become

    Управление службами

    На этом этапе мы собирались использовать сервисный модуль в специальной команде для управления системной службой на обеспечивающем сервере.

    1. Запустите службы

    Запустите службу nginx и добавьте ее во время загрузки.

    ansible hakase-testing -m service -a 'name=nginx state=started enabled=yes' --become

    Вы получите измененный и включенный результат как истинный.

    2. Перезапустите службу

    Если вы хотите перезапустить службу, вы можете использовать следующую команду.

    ansible hakase-testing -m service -a 'name=nginx state=restarted' --become

    Служба nginx перезапущена.

    3. Остановить службу

    Чтобы остановить службу, измените значение состояния на остановлено.

    ansible hakase-testing -m service -a 'name=nginx state=stopped' --become

    Служба nginx на серверах hakase-testing остановлена.

    Проверка системы

    Теперь собирались использовать модуль оболочки внутри специальной команды. И мы будем делать простой мониторинг системы, используя простую команду Linux через Ansible ad-hoc.

    Во-первых, установите пакет sysstat на все серверы с помощью приведенной ниже специальной команды.

    ansible hakase-testing -m apt -a 'name=sysstat state=latest' --become

    Дождитесь установки пакета sysstat.

    После завершения вы готовы проверить все серверы.

    1. Диск доступен

    Проверьте доступный диск в корневом разделе с помощью команды fdisk.

    ansible hakase-testing -m shell -a 'df -h /dev/sda2' --become

    Измените /dev/sda2 на свой собственный путь.

    2. Использование оперативной памяти

    Теперь проверьте использование оперативной памяти на всех серверах с помощью команды free -m.

    ansible hakase-testing -m shell -a 'free -m' --become

    И вам будет показан результат, как показано ниже.

    3. Использование ЦП

    Проверка загрузки ЦП всех серверов с помощью команды mpstat.

    ansible hakase-testing -m shell -a 'mpstat -P ALL' --become

    Команда mpstat является частью пакета sysstat.

    4. Открытые порты

    Проверка открытых портов во всей системе с помощью netstat через команду ad-hoc.

    ansible hakase-testing -m shell -a 'netstat -plntu' --become

    5. Время безотказной работы

    Теперь проверьте время работы каждого сервера.

    ansible hakase-testing -m shell -a 'uptime' --become