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

Вступление

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

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

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

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

Предпосылки

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

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

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

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

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

sudo yum install epel-release

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

sudo yum install ansible

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

Шаг 2 - Настройка Ansible Hosts

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

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

sudo vi /etc/ansible/hosts

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

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

Пример файла hosts

[]
alias ansible_ssh_host=

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

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

ssh root@

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

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

/ и т.д. / анзибль / хостов

[servers]
host1 ansible_ssh_host=
host2 ansible_ssh_host=
host3 ansible_ssh_host=

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

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

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

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

sudo mkdir /etc/ansible/group_vars

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

sudo nano /etc/ansible/group_vars/servers

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

/ и т.д. / анзибль / group_vars / серверов

---
ansible_ssh_user:

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

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

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

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

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

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

ansible -m ping all

Ansible вернет вывод примерно так:

Outputhost1 | 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 + означает «все хосты». Вы также можете легко указать группу:

ansible -m ping servers

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

ansible -m ping host1

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

ansible -m ping host1:host2

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

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

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

Outputhost1 | 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 для выполнения тяжелой работы за вас. Вы можете узнать больше в Configuration Management 101: Написание Ansible Playbooks и https://www.digitalocean.com/ community / tutorials / how-to-create-ansible-playbooks-to-auto-system-configuration-on-ubuntu [Как создать Ansible Playbook для автоматизации конфигурации системы в Ubuntu]

Related