системный администратор с ansible

Ansible, бесплатный проект Red Hat на основе Python с открытым исходным кодом, представляет собой популярную платформу управления конфигурацией и автоматизации ИТ.

Он мультиплатформенный и может работать с большинством современных операционных систем, включая Linux, Windows и Mac. Он поддерживает декларативный язык, написанный на YAML или YAML не является языком разметки, для описания конфигурации системы.

Ansible, наряду с другими современными платформами управления конфигурациями, произвел революцию в автоматизации ИТ и отраслевых стандартах. Инструменты управления конфигурацией стали частью набора инструментов DevOps и являются неотъемлемой частью жизненного цикла любого современного ИТ-процесса. Это применимо для любой современной инфраструктурной среды, независимо от того, построена ли она на локальной, гибридной или облачной среде. Не только для DevOps, Ansible также может помочь автоматизировать многие повседневные задачи, выполняемые системным администратором.

Одним из преимуществ использования Ansible является то, что он не требует агентов и для начала работы не требуется ничего, кроме SSH-доступа к целевой машине и поддерживаемой версии Python, которая уже установлена по умолчанию в большинстве современных операционных систем. Кроме того, поскольку это легкий инструмент, его можно развернуть и использовать с традиционными инновационными системами.

Использование Ансибла

оркестровка

Ansible — это инструмент для организации различных задач системного администрирования и развертывания. Playbooks позволяют использовать одни и те же рабочие процессы оркестрации в разных проектах, а данные конфигурации на основе YAML позволяют хранить и управлять версиями вашей инфраструктуры в репозитории Git или на любой поддерживаемой платформе контроля версий.

Развертывание приложений

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

Безопасность и соответствие требованиям

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

Давайте теперь рассмотрим некоторые распространенные задачи системного администратора, которые можно автоматизировать с помощью Ansible.

Копирование файлов из локальной или удаленной системы

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

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

Для системного администратора это рутинная задача — знать состояние управляемых серверов и выполнять заранее определенные действия в соответствии с политикой организации. Одной из таких задач является определение времени безотказной работы сервера. С помощью Ansible мы можем легко получить значения времени безотказной работы и распечатать их вместе. Ниже показан пример копирования конфигурации ntp с локального на удаленный сервер с помощью модуля копирования:

— — хосты: все сбор_фактов: нет стать: да задачи: — имя: Скопировать новый файл конфигурации ntp и создать резервную копию оригинала, если он отличается копия: src: ./ntp.conf dest: /etc/ntp.conf владелец: корневая группа: режим root: '0644' резервная копия: да

Настройка дополнительных заданий cron

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

cron — один из таких инструментов в Linux, который поддерживает планирование, и Ansible может помочь вам добавить или изменить эти задания. В качестве примера в приведенном ниже сборнике показано, как можно легко установить задание rsync от имени пользователя root на некоторых или всех ваших серверах с помощью Ansible.

— — хосты: все сбор_фактов: нет стать: да задачи: — имя: Развернуть задание cron cron: имя: «Установить задание rsync» пользователь: root минута: «5» час: «4» задание: «rsync -avz / путь/к/папке1 /путь/к/папке1 2>&1»

Управление дисками и файловыми системами

Ansible можно использовать для управления дисками, структурой разделов, файловыми системами и монтированием, включая /etc/fstab на серверах Linux. Другой модуль Ansible делает это возможным. Вот пример, в котором создается раздел на диске емкостью 100 ГБ, форматируется его с помощью файловой системы ext4, создается новый каталог для монтирования раздела и, наконец, монтируется его в заданный каталог. Запись в /etc/fstab также создается посредством временного или постоянного монтирования в зависимости от параметров модуля.

— — хосты: все сбор_фактов: нет стать: да задачи: — имя: Создать раздел parted: устройство: /dev/sdb номер: 1 part_end: состояние «100%»: присутствует — имя: Форматировать новый раздел файловая система: fstype : ext4 dev: /dev/sdb1 — имя: Создать файл каталога монтирования: путь: /data состояние: каталог — имя: Монтировать раздел монтирования: путь: /data src: /dev/sdb1 fstype: состояние ext4: смонтировано

Собирать логи сервера

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

— — хосты: все сбор_фактов: нет стать: да задачи: — имя: Найти журналы найти: пути: /var/log/ шаблоны: '*.log' рекурсия: да регистр: _logs — имя: Получить журналы выборка: src : «{{ item.path }}» dest: /tmp/logs with_items: «{{ _logs.files }}»

Установка или удаление пакетов и программного обеспечения

Пакеты часто необходимо устанавливать по запросам пользователей или как часть первоначальных сборок сервера. Нам также может потребоваться удалить определенные пакеты, которые больше не нужны или содержат некоторые критические ошибки и т. д. Ansible позволяет легко устанавливать или удалять пакеты без необходимости обращаться к каждому серверу и запускать команды вручную. Ниже приведен пример, демонстрирующий установку и удаление по одному пакету для серверов Linux на базе Ubuntu и RHEL/CentOS.

— — хосты: ubuntu сбор_фактов: нет задач: — имя: Установить утилиту lsof apt: pkg: состояние lsof: последнее sudo: да — имя: Удалить утилиту сканирования ARP apt: pkg: состояние arp-scan: отсутствует sudo: да — — — хосты: centos сбор_фактов: нет задач: — имя: Установить утилиту lsof yum: pkg: состояние lsof: последнее sudo: да — имя: Удалить утилиту сканирования ARP yum: pkg: состояние arp-scan: отсутствует sudo: да

Управление пользователями

Пользователи и группы образуют базовую структуру, на основе которой системы на базе Unix/Linux управляют доступом и разрешениями. В большой организации управление пользователями и группами может стать большой проблемой, несмотря на автоматизацию поддержки среды.

Благодаря Ansible системный администратор получает отличный инструмент для создания, изменения и удаления пользователей и групп со всеми различными возможностями, поддерживаемыми в ОС.

Вот простой пример, показывающий создание и удаление пользователей и групп с помощью Ansible. После запуска этой книги действий на целевых серверах будут созданы группы A и GroupB с заданными GID, а пользователь user1 будет удален, если он присутствует. Новый пользователь без оболочки будет создан как user2 с заданным UID, назначенными группами и заблокированным паролем.

— — хосты: все сбор_фактов: нет стать: да задачи: — группа: gid: 12310 имя: состояние группыA: присутствует — группа: gid: 12311 имя: состояние группыB: присутствует — пользователь: имя: состояние пользователя1: отсутствует — пользователь : имя: user2 uid: 12427 оболочка: /bin/false пароль_блокировка: да группы: группаA, группаB

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

Службы — это демоны процессов, которые работают в фоновом режиме и обслуживают некоторые службы, такие как sshd, обеспечивающие подключение SSH и т. д. Используя Ansible, вы можете управлять системными и пользовательскими службами, например запускать, останавливать и перезапускать их. Вот пример сценария, демонстрирующий это:

— — хосты: все сбор_фактов: нет стать: да задачи: — имя: Перезапустить службу демона ssh: имя: состояние ssh: перезапущен — имя: Перезапустить службу демона sssd: имя: состояние sssd: остановлено — имя: Перезапустить службу демона httpd : имя: состояние httpd: запущено

В приведенном выше примере служба SSH будет перезапущена, а затем будет остановлена служба SSSD. Демон httpd запускается ближе к концу. Поскольку Ansible является идемпотентным, любая служба, которая уже запущена или остановлена, не будет изменена, а перезапуск всегда меняет состояние службы. Не забудьте проверить имя службы, поскольку разные дистрибутивы Linux используют разные имена даже для одной и той же службы, например ssh и sshd.

Резюме 👨‍💻

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

Чтобы узнать больше об Ansible и его обширном наборе модулей, обратитесь к его документации.

Источник