Skip to content

Лабораторная работа №6: Введение в Ansible

Установить Ansible на управляющий узел, создать inventory (инвентарный файл) для описания нашей инфраструктуры и научиться выполнять простые ad-hoc команды для сбора информации и выполнения мелких задач на удаленных серверах.

Основные теоретические положения

Section titled “Основные теоретические положения”

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

  • Agentless (Безагентная архитектура): Ansible не требует установки какого-либо специального ПО (агентов) на управляемые узлы. Он работает через стандартный и повсеместно используемый протокол SSH.
  • Декларативность: Вы описываете желаемое состояние системы, а Ansible берет на себя задачу по его достижению.
  • Идемпотентность: Повторный запуск одной и той же операции не приведет к изменениям, если система уже находится в желаемом состоянии.
  • Рекомендуемая литература: Introduction to Ansible (Документация Ansible)

Inventory — это “карта” вашей инфраструктуры для Ansible. Это текстовый файл (в формате INI или YAML), который описывает хосты, которыми вы собираетесь управлять.

  • Группы: Хосты можно объединять в группы (например, [webservers], [databases]).
  • Переменные: Прямо в inventory можно задавать переменные для хостов или групп (например, ansible_host для указания IP-адреса).
  • Рекомендуемая литература: How to build your inventory (Документация Ansible)

Это простые однострочные команды для быстрых задач, не требующих написания целого плейбука.

  • Формат: ansible <хост/группа> -m <модуль> -a "<аргументы>"
  • Модули: Ansible имеет сотни модулей для выполнения конкретных задач (ping, command, shell, apt, service).
  • Рекомендуемая литература: Introduction to ad hoc commands (Документация Ansible)

Задания для выполнения

Section titled “Задания для выполнения”
  1. Установка Ansible (15 мин):

    • Подключитесь по SSH к вашему управляющему узлу Main-server.
    • Установите Ansible. Для Ubuntu:
      Terminal window
      sudo apt update
      sudo apt install software-properties-common
      sudo add-apt-repository --yes --update ppa:ansible/ansible
      sudo apt install ansible
    • Проверьте установку: ansible --version.
  2. Создание inventory (30 мин):

    • На Main-server создайте директорию для проекта, например mkdir ansible-project && cd ansible-project.
    • Внутри создайте файл inventory.ini.
    • Опишите в нем ваши виртуальные машины Web-node и Db-node, используя их IP-адреса. Объедините их в группы.
      inventory.ini
      [web]
      Web-node ansible_host=192.168.56.11
      [db]
      Db-node ansible_host=192.168.56.12
      [all:vars]
      ansible_user=user # Замените 'user' на имя вашего пользователя на ВМ
  3. Выполнение Ad-hoc команд (45 мин):

    • Убедитесь, что Ansible может подключиться ко всем хостам. Модуль ping в Ansible — это не ICMP-пинг, а проверка доступности хоста по SSH и возможности запустить Python-интерпретатор.
      Terminal window
      ansible all -i inventory.ini -m ping
      Вы должны получить зеленый ответ SUCCESS для каждого хоста.
    • Соберите информацию (факты) о сервере Web-node. Модуль setup собирает огромное количество данных о системе.
      Terminal window
      ansible Web-node -i inventory.ini -m setup
    • Проверьте аптайм (время работы) всех серверов с помощью модуля command.
      Terminal window
      ansible all -i inventory.ini -m command -a "uptime"
    • Проверьте, сколько свободного места на дисках на сервере Db-node.
      Terminal window
      ansible Db-node -i inventory.ini -m command -a "df -h"
  1. В чем главное преимущество безагентной архитектуры Ansible?
  2. Для чего нужен inventory файл?
  3. Что делает модуль ping в Ansible?
  4. В чем разница между command и shell модулями в Ansible? (Подсказка: shell поддерживает переменные окружения и операторы вроде |, >, а command — нет).