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

Как установить и настроить Ansible в Ubuntu 18.04


Введение

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

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

В этом руководстве мы обсудим, как установить Ansible на сервер Ubuntu 18.04, и рассмотрим некоторые основы использования этого программного обеспечения.

Как работает Ansible?

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

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

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

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

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

Предпосылки

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

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

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

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

    Шаг 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, содержит ряд примеров, которые можно использовать в качестве справочных материалов для настройки инвентаризации. В следующем примере определяется группа с именем [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), который отсутствует на последние версии Ubuntu.

    Когда закончите, сохраните и закройте файл, нажав 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.

    В этом руководстве мы будем использовать корневую учетную запись Ubuntu, потому что обычно это единственная учетная запись, доступная по умолчанию на вновь созданных серверах. Если на ваших узлах 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, вы можете выполнять на этих хостах любую команду или плейбук. Для свежих серверов: Управление конфигурацией 101: Написание Ansible Playbooks.

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