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

Как установить и настроить Ansible в Debian 11


Введение

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

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

В этом руководстве мы обсудим, как установить Ansible на сервер Debian 11, и рассмотрим некоторые основы использования этого программного обеспечения. Более подробный обзор Ansible как инструмента управления конфигурацией см. в An Introduction to Configuration Management with Ansible.

Предпосылки

Чтобы следовать этому руководству, вам понадобятся:

  • Один узел управления Ansible: Узел управления Ansible — это машина, которую мы будем использовать для подключения и управления хостами Ansible через SSH. Узлом управления Ansible может быть либо ваш локальный компьютер, либо сервер, выделенный для запуска Ansible, хотя в этом руководстве предполагается, что вашим узлом управления является система Debian 11. Убедитесь, что управляющий узел имеет:
    • Пользователь без полномочий root с привилегиями sudo. Чтобы настроить это, вы можете выполнить шаги 2 и 3 нашего Руководства по начальной настройке сервера для Debian 11. Однако обратите внимание, что если вы используете удаленный сервер в качестве узла Ansible Control, вы должны следовать каждому шагу этого руководства. Это позволит настроить брандмауэр на сервере с помощью ufw и разрешить внешний доступ к вашему профилю пользователя без полномочий root, что поможет обеспечить безопасность удаленного сервера.
    • Пара ключей SSH, связанная с этим пользователем. Чтобы настроить это, вы можете выполнить шаг 1 нашего руководства «Как настроить ключи SSH в Debian 11».

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

    • Открытый ключ SSH узла управления Ansible добавлен к authorized_keys системного пользователя. Этот пользователь может быть либо root, либо обычным пользователем с привилегиями sudo. Чтобы настроить это, вы можете выполнить шаг 2 раздела Как настроить ключи SSH в Debian 11.

    Шаг 1 — Установка Ansible

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

    На узле управления выполните следующую команду, чтобы включить PPA (личный архив пакетов) официального проекта в список источников вашей системы:

    1. sudo apt-add-repository ppa:ansible/ansible

    Нажмите ENTER, когда будет предложено принять добавление PPA.

    Затем обновите индекс пакетов вашей системы, чтобы он знал о пакетах, доступных во вновь включенном PPA:

    1. sudo apt update

    После этого обновления вы можете установить программное обеспечение Ansible с помощью:

    1. sudo apt install ansible

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

    Шаг 2 — Настройка файла инвентаризации

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

    Чтобы отредактировать содержимое инвентаря Ansible по умолчанию, откройте файл /etc/ansible/hosts с помощью выбранного вами текстового редактора на узле управления Ansible:

    1. sudo nano /etc/ansible/hosts

    Примечание. Хотя Ansible обычно создает файл инвентаризации по умолчанию в etc/ansible/hosts, вы можете создавать файлы инвентаризации в любом месте, которое лучше соответствует вашим потребностям. В этом случае вам нужно будет указать путь к вашему пользовательскому файлу инвентаризации с параметром -i при запуске команд Ansible и плейбуков. Использование файлов инвентаризации для каждого проекта является хорошей практикой, позволяющей свести к минимуму риск запуска плейбука на неправильной группе серверов.

    Файл инвентаризации по умолчанию, предоставляемый при установке Ansible, содержит ряд примеров, которые можно использовать в качестве справочных материалов для настройки инвентаризации. В следующем примере определяется группа с именем [servers] с тремя разными серверами, каждый из которых идентифицируется настраиваемым псевдонимом: server1, server2 и server3. Обязательно замените выделенные IP-адреса IP-адресами ваших хостов Ansible.

    [servers]
    server1 ansible_host=203.0.113.111
    server2 ansible_host=203.0.113.112
    server3 ansible_host=203.0.113.113
    
    [all:vars]
    ansible_python_interpreter=/usr/bin/python3
    

    Подгруппа all:vars устанавливает параметр хоста ansible_python_interpreter, который будет действительным для всех хостов, включенных в этот список. Этот параметр гарантирует, что удаленный сервер использует исполняемый файл /usr/bin/python3 Python 3 вместо /usr/bin/python (Python 2.7), который отсутствует на последние версии Debian.

    Когда закончите, сохраните и закройте файл, нажав CTRL+X, затем Y и ENTER, чтобы подтвердить изменения.

    Всякий раз, когда вы хотите проверить свой инвентарь, вы можете запустить:

    1. ansible-inventory --list -y

    Вы увидите вывод, похожий на этот, но содержащий вашу собственную серверную инфраструктуру, как указано в вашем файле инвентаризации:

    Output
    all: children: servers: hosts: server1: ansible_host: 203.0.113.111 ansible_python_interpreter: /usr/bin/python3 server2: ansible_host: 203.0.113.112 ansible_python_interpreter: /usr/bin/python3 server3: ansible_host: 203.0.113.113 ansible_python_interpreter: /usr/bin/python3 ungrouped: {}

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

    Шаг 3 — Тестирование соединения

    После настройки файла инвентаризации для включения ваших серверов пришло время проверить, может ли Ansible подключаться к этим серверам и выполнять команды через SSH.

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

    Вы можете использовать аргумент -u, чтобы указать пользователя удаленной системы. Если он не указан, Ansible попытается подключиться к управляющему узлу от имени вашего текущего системного пользователя.

    На локальном компьютере или управляющем узле Ansible запустите:

    1. ansible all -m ping -u root

    Эта команда будет использовать встроенный в Ansible модуль ping для запуска теста подключения на всех узлах из вашего инвентаря по умолчанию, подключаясь как root. Модуль ping проверит:

    • если хосты доступны;
    • если у вас есть действительные учетные данные SSH;
    • если хосты могут запускать модули Ansible с помощью Python.

    Вы должны получить вывод, подобный этому:

    Output
    server1 | SUCCESS => { "changed": false, "ping": "pong" } server2 | SUCCESS => { "changed": false, "ping": "pong" } server3 | SUCCESS => { "changed": false, "ping": "pong" }

    Если вы впервые подключаетесь к этим серверам через SSH, вас попросят подтвердить подлинность хостов, к которым вы подключаетесь через Ansible. При появлении запроса введите yes, а затем нажмите ENTER для подтверждения.

    Как только вы получите ответ pong от хоста, это означает, что вы готовы запускать команды Ansible и плейбуки на этом сервере.

    Примечание. Если вы не можете получить успешный ответ от своих серверов, ознакомьтесь с нашим руководством по Ansible Cheat Sheet для получения дополнительной информации о том, как запускать команды Ansible с различными параметрами подключения.

    Шаг 4 — Запуск специальных команд (необязательно)

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

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

    1. ansible all -a "df -h" -u root
    Output
    server1 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 798M 624K 798M 1% /run /dev/vda1 155G 2.3G 153G 2% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 798M 0 798M 0% /run/user/0 server2 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 395M 608K 394M 1% /run /dev/vda1 78G 2.2G 76G 3% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 395M 0 395M 0% /run/user/0 ...

    Выделенную команду df -h можно заменить любой командой по вашему желанию.

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

    1. ansible all -m apt -a "name=vim state=latest" -u root

    Вы также можете ориентироваться на отдельные хосты, а также на группы и подгруппы при выполнении команд Ansible. Например, вот как можно проверить время работы каждого хоста в группе servers:

    1. ansible servers -a "uptime" -u root

    Мы можем указать несколько хостов, разделив их двоеточиями:

    1. ansible server1:server2 -m ping -u root

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

    Заключение

    В этом руководстве вы установили Ansible и настроили файл инвентаризации для выполнения специальных команд с узла управления Ansible.

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

    Для получения дополнительной информации о том, как использовать Ansible, ознакомьтесь с нашим руководством по Ansible Cheat Sheet.