Лабораторная работа №6: Введение в Ansible
Цель работы
Section titled “Цель работы”Установить Ansible на управляющий узел, создать inventory (инвентарный файл) для описания нашей инфраструктуры и научиться выполнять простые ad-hoc команды для сбора информации и выполнения мелких задач на удаленных серверах.
Основные теоретические положения
Section titled “Основные теоретические положения”1. Ansible и его философия
Section titled “1. Ansible и его философия”Ansible — это система управления конфигурациями, развертывания приложений и автоматизации задач. Ключевые особенности:
- Agentless (Безагентная архитектура): Ansible не требует установки какого-либо специального ПО (агентов) на управляемые узлы. Он работает через стандартный и повсеместно используемый протокол SSH.
- Декларативность: Вы описываете желаемое состояние системы, а Ansible берет на себя задачу по его достижению.
- Идемпотентность: Повторный запуск одной и той же операции не приведет к изменениям, если система уже находится в желаемом состоянии.
- Рекомендуемая литература: Introduction to Ansible (Документация Ansible)
2. Inventory (Инвентарь)
Section titled “2. Inventory (Инвентарь)”Inventory — это “карта” вашей инфраструктуры для Ansible. Это текстовый файл (в формате INI или YAML), который описывает хосты, которыми вы собираетесь управлять.
- Группы: Хосты можно объединять в группы (например,
[webservers],[databases]). - Переменные: Прямо в inventory можно задавать переменные для хостов или групп (например,
ansible_hostдля указания IP-адреса). - Рекомендуемая литература: How to build your inventory (Документация Ansible)
3. Ad-hoc команды
Section titled “3. Ad-hoc команды”Это простые однострочные команды для быстрых задач, не требующих написания целого плейбука.
- Формат:
ansible <хост/группа> -m <модуль> -a "<аргументы>" - Модули: Ansible имеет сотни модулей для выполнения конкретных задач (
ping,command,shell,apt,service). - Рекомендуемая литература: Introduction to ad hoc commands (Документация Ansible)
Задания для выполнения
Section titled “Задания для выполнения”-
Установка Ansible (15 мин):
- Подключитесь по SSH к вашему управляющему узлу
Main-server. - Установите Ansible. Для Ubuntu:
Terminal window sudo apt updatesudo apt install software-properties-commonsudo add-apt-repository --yes --update ppa:ansible/ansiblesudo apt install ansible - Проверьте установку:
ansible --version.
- Подключитесь по SSH к вашему управляющему узлу
-
Создание
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' на имя вашего пользователя на ВМ
- На
-
Выполнение Ad-hoc команд (45 мин):
- Убедитесь, что Ansible может подключиться ко всем хостам. Модуль
pingв Ansible — это не ICMP-пинг, а проверка доступности хоста по SSH и возможности запустить Python-интерпретатор.Вы должны получить зеленый ответTerminal window ansible all -i inventory.ini -m pingSUCCESSдля каждого хоста. - Соберите информацию (факты) о сервере
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"
- Убедитесь, что Ansible может подключиться ко всем хостам. Модуль
Контрольные вопросы
Section titled “Контрольные вопросы”- В чем главное преимущество безагентной архитектуры Ansible?
- Для чего нужен
inventoryфайл? - Что делает модуль
pingв Ansible? - В чем разница между
commandиshellмодулями в Ansible? (Подсказка:shellподдерживает переменные окружения и операторы вроде|,>, аcommand— нет).