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

Как установить и настроить Ansible на CentOS 7


Введение

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

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

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

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

Предпосылки

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

  • Один сервер CentOS 7. Следуйте инструкциям в разделе Начальная настройка сервера с CentOS 7, чтобы создать пользователя без полномочий root и убедитесь, что вы можете подключиться к серверу без пароля.

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

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

Чтобы получить Ansible для CentOS 7, сначала убедитесь, что репозиторий CentOS 7 EPEL установлен:

  1. sudo yum install epel-release

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

  1. sudo yum install ansible

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

Шаг 2 — Настройка хостов Ansible

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

Откройте файл с правами root следующим образом:

  1. sudo vi /etc/ansible/hosts

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

Файл hosts довольно гибкий и может быть настроен несколькими различными способами. Синтаксис, который мы собираемся использовать, выглядит примерно так:

[group_name]
alias ansible_ssh_host=your_server_ip

group_name – это организационный тег, который позволяет вам обращаться к любым серверам, перечисленным под ним, одним словом. Псевдоним — это просто имя для ссылки на этот сервер.

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

  1. ssh root@your_server_ip

Вам не следует запрашивать пароль. Хотя Ansible, безусловно, может обрабатывать аутентификацию SSH на основе пароля, ключи SSH упрощают работу. Вы можете следовать руководству «Как использовать ключи SSH с каплями DigitalOcean», чтобы настроить ключи SSH на каждом хосте, если вы еще этого не сделали.

Предположим, что IP-адреса наших серверов — 192.0.2.1, 192.0.2.2 и 192.0.2.3. Давайте настроим это так, чтобы мы могли обращаться к ним по отдельности как host1, host2 и host3 или к группе как серверы. . Чтобы настроить это, вы должны добавить этот блок в файл hosts:

[servers]
host1 ansible_ssh_host=192.0.2.1
host2 ansible_ssh_host=192.0.2.2
host3 ansible_ssh_host=192.0.2.3

Хосты могут входить в несколько групп, а группы могут настраивать параметры для всех своих членов. Давайте попробуем это прямо сейчас.

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

Ansible connection error
host1 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true }

Давайте конкретно скажем Ansible, что он должен подключаться к серверам в группе \servers с пользователем sammy. Создайте каталог в структуре конфигурации Ansible с именем group_vars.

  1. sudo mkdir /etc/ansible/group_vars

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

  1. sudo nano /etc/ansible/group_vars/servers

Добавьте этот код в файл:

---
ansible_ssh_user: sammy

Файлы YAML начинаются с \—, поэтому убедитесь, что вы не забыли эту часть.

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

Если вы хотите указать детали конфигурации для каждого сервера, независимо от групповой связи, вы можете поместить эти детали в файл по адресу /etc/ansible/group_vars/all. Отдельные хосты можно настроить, создав файлы в каталоге /etc/ansible/host_vars.

Шаг 3 — Использование простых команд Ansible

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

Пропингуйте все серверы, которые вы настроили, набрав:

  1. ansible -m ping all

Ansible вернет вывод следующим образом:

Output
host1 | SUCCESS => { "changed": false, "ping": "pong" } host3 | SUCCESS => { "changed": false, "ping": "pong" } host2 | SUCCESS => { "changed": false, "ping": "pong" }

Это базовый тест, чтобы убедиться, что Ansible имеет соединение со всеми своими хостами.

Часть команды -m ping представляет собой инструкцию для Ansible по использованию модуля \ping. В основном это команды, которые вы можете запускать на своих удаленных хостах. Модуль ping работает разными способами, например: обычная утилита ping в Linux, но вместо этого она проверяет возможность подключения Ansible.

Часть all означает «все хосты». Вы могли бы так же легко указать группу:

  1. ansible -m ping servers

Вы также можете указать отдельный хост:

  1. ansible -m ping host1

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

  1. ansible -m ping host1:host2

Модуль shell позволяет нам отправить команду терминала на удаленный хост и получить результаты. Например, чтобы узнать использование памяти на нашей машине host1, мы могли бы использовать:

  1. ansible -m shell -a 'free -m' host1

Как видите, вы передаете аргументы в скрипт с помощью переключателя -a. Вот как может выглядеть вывод:

Output
host1 | SUCCESS | rc=0 >> total used free shared buffers cached Mem: 3954 227 3726 0 14 93 -/+ buffers/cache: 119 3834 Swap: 0 0 0

Заключение

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

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