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

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

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

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

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

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

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

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

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

Конфигурационные файлы в основном написаны в формате YAML. Ansible может взаимодействовать с хостами либо с помощью инструментов командной строки, либо с помощью сценариев конфигурации, известных как Playbook (плейбук).

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

Чтобы начать использовать Ansible в качестве средства управления серверной инфраструктурой, необходимо установить Ansible на сервер, который будет служить узлом управления Ansible (Ansible control node).

На узле управления выполните следующую команду, чтобы включить PPA (personal package archive) официального проекта в список источников системы sources.list:

$ sudo apt-add-repository ppa:ansible/ansible
Press ENTER when prompted to accept the PPA addition.

Нажмем ENTER. Затем обновите индекс пакетов системы, чтобы он знал о пакетах, доступных в недавно включенном PPA:

$ sudo apt update

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

$ sudo apt install ansible

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

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

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

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

$ sudo nano /etc/ansible/hosts

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

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

$ cat /etc/ansible/hosts

[servers]
server1 ansible_host=192.168.1.111
server2 ansible_host=192.168.1.112
server3 ansible_host=192.168.1.113

[servers:vars]
ansible_python_interpreter=/usr/bin/python3

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

Сохраните и закройте файл.

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

$ ansible-inventory --list -y

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

all:
children:
servers:
hosts:
server1:
ansible_host: 192.168.1.111
ansible_python_interpreter: /usr/bin/python3
server2:
ansible_host: 192.168.1.112
ansible_python_interpreter: /usr/bin/python3
server3:
ansible_host: 192.168.1.113
ansible_python_interpreter: /usr/bin/python3
ungrouped: {}

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

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

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

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

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

На главном хосте управления Ansible выполните команду:

$ ansible all -m ping -u root

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

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

Вы должны получить результат, подобный этому:

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

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

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

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

Step 4 — Отправка команд (опционально)

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

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

$ ansible all -a "df -h" -u root

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 на всех серверах в вашем списке серверов:

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

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

Так можно проверить время безотказной работы каждого узла в группе серверов:

$ ansible servers -a "uptime" -u root

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

$ ansible server1:server2 -m ping -u root

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

Заключение

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

После того, как вы убедились, что можете подключаться и управлять своей инфраструктурой с центрального сервера-контроллера Ansible, вы можете выполнить любую команду или плейбук, которую хотите, на этих удаленных хостах. Для новых серверов будет полезен плейбук Initial Server Setup. Вы также можете научиться писать свои собственные плейбуки с помощью руководства Configuration Management 101: Writing Ansible Playbooks.

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


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.


Unlix © Все права защищены 2019

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!