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

Как установить и протестировать Ansible в Linux


На этой странице

  1. Установите Ansible на CentOS 7:
  2. Установите Ansible на CentOS 8:
  3. Установите Ansible в Ubuntu:
  4. Установите Ansible с Python PIP на CentOS, Debian и Ubuntu:
  5. Настройка хостов Ansible Controller:
  6. Вывод:

Ansible – это широко используемый инструмент управления конфигурацией, написанный на языке Python, который помогает настраивать один или несколько компьютеров одновременно. Ansible можно использовать для выполнения следующих задач: -box-3-0;var ffid=1;var alS=1002%1000;var container=document.getElementById(slotId);container.style.width=100%;var ins=document.createElement(ins);ins. id=slotId+-asloaded;ins.className=adsbygoogle ezasloaded;ins.dataset.adClient=pid;ins.dataset.adChannel=cid;if(ffid==2){ins.dataset.fullWidthResponsive=true;}

  • Настройка с нуля одного или нескольких узлов
  • Развертывания
  • Изменения в конфигурации
  • Исправление
  • Управление услугами
  • и многое другое

Ansible широко используется из-за его простоты. Код Ansible также написан на языке YAML, для него не требуется установка агента на удаленной машине. Ansible использует порт 22 (SSH) для подключения к удаленному компьютеру и внесения необходимых изменений.

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

Давайте посмотрим на установку Ansible на узле контроллера.

Установите Ansible на CentOS 7:

Поскольку Python является единственным предварительным условием для установки Ansible, давайте установим Python, выполнив приведенную ниже команду.

$sudo yum install python3 -y

Чтобы установить Ansible на CentOS 7, сначала убедитесь, что установлен репозиторий CentOS 7 EPEL. Выполните приведенную ниже команду, чтобы установить репозиторий epel.

$sudo yum install epel-release

Обновите индекс системного пакета, выполнив приведенную ниже команду обновления.

$sudo yum update -y

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

$sudo yum install ansible -y

Проверьте правильность установки Ansible и его версию.

$ansible -v

Установите Ansible на CentOS 8:

Давайте посмотрим на шаги установки для CentOS 8. Давайте установим python на CentOS 8.

$sudo dnf install python3

После установки python давайте установим репозиторий EPEL, выполнив приведенную ниже команду.

$sudo dnf install epel-release -y

Обновите индекс системного пакета, выполнив приведенную ниже команду обновления.

$sudo dnf update -y

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

$sudo dnf install ansible -y

Проверьте правильность установки Ansible и его версию.

$ansible -v

Установите Ansible на Ubuntu:

В настоящее время Python является пакетом по умолчанию в большинстве дистрибутивов Linux. Если у вас не установлен python, выполните приведенную ниже команду, чтобы установить пакет python.

$sudo apt-get install python3

Чтобы установить Ansible в Ubuntu, давайте сначала установим репозиторий, выполнив приведенную ниже команду.

$sudo apt-add-repository ppa:ansible/ansible

Обновите индекс системного пакета, выполнив приведенную ниже команду обновления.

$sudo apt-get update -y

Теперь установите Ansible.

$sudo apt-get install -y ansible

Проверьте правильность установки Ansible и его версию.

$ansible -v

Установите Ansible с Python PIP на CentOS, Debian и Ubuntu:

Независимо от того, какую операционную систему вы используете, вы можете установить Ansible с помощью установщика пакетов Python. Давайте выполним приведенную ниже команду, чтобы установить python3-pip.

Для CentOS 7 и ниже:

$sudo yum install python3 python3-pip -y

Для CentOS 8:

$sudo dnf install python3 python3-pip -y

Для Ubuntu и Debian:

$sudo apt-get install python3 python3-pip

Поскольку у нас установлены python и pip, давайте выполним приведенную ниже команду в любой операционной системе, чтобы установить Ansible.

$sudo pip3 install ansible

Проверьте правильность установки Ansible и его версию.

$ansible -v

Настройка узлов контроллера Ansible:

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

Примечание. Не всегда необходимо использовать файл hosts для подключения к управляемым узлам. Но тогда каждый раз нам нужно использовать IP-адрес сервера управляемого узла или имя хоста при выполнении каждой команды.

Создайте файл (если его еще нет) с правами суперпользователя, выполнив следующую команду:

$sudo touch /etc/ansible/hosts

Прежде чем писать в файл, давайте посмотрим и поймем пример файла hosts:

[group_name]
alias ansible_ssh_host=your_node_server_ip

Файл hosts должен следовать приведенному выше синтаксису. Давайте посмотрим на каждый параметр.

[group_name]: этот параметр создаст группу. Все IP-адреса управляемых узлов или имена хостов в параметре group_name будут попадать в одну и ту же группу. Например, если в нашей инфраструктуре есть несколько веб-серверов, мы можем добавить сюда все IP-адреса или имена хостов управляемого узла.

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

ansible_ssh_host=your_node_server_ip: этот параметр укажет псевдоним на IP-адрес или имя хоста управляемого узла.

Мы будем использовать CentOS 8 в качестве управляемого узла с Ansible. Как упоминалось выше, Ansible использует для подключения 22-й порт удаленного хоста.

Предположим, что IP-адреса серверов управляемых узлов CentOS — 192.168.0.2, 192.168.0.3 и 192.168.0.4.

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

$ssh 192.168.0.2
$ssh 192.168.0.3
$ssh 192.168.0.4

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

Поскольку мы настроили подключение ssh между контроллером Ansible и управляемыми узлами, давайте настроим файл hosts для подключения ко всем управляемым узлам. Как упоминалось ранее, мы можем добавить несколько псевдонимов узловых серверов в одну группу. В этом случае давайте добавим все три узла и назначим псевдонимы host1, host2 и host3 соответственно. Наш файл hosts должен выглядеть так, как показано ниже, после добавления всех сведений об управляемом узле. Выполните команду ниже, чтобы отредактировать файл hosts, который мы создали ранее.

Откройте файл с привилегиями root, выполнив следующую команду:

$sudo vi /etc/ansible/hosts

Давайте добавим указанную ниже конфигурацию в файл hosts.

[node_servers]
host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4

Здесь мы добавили все IP-адреса и псевдонимы управляемых узлов в группу с именем node_servers.

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

$ansible -m ping node_servers

Приведенная выше команда использует модуль ping для подключения к группе «node_servers», которую мы определили в файле hosts выше.

Вы можете столкнуться с ошибками по разным причинам.

  1. По умолчанию Ansible попытается подключиться к управляемому узлу, используя ваше текущее имя пользователя, если вы его не указали. Если этот пользователь не существует на сервере узла, вы получите следующую ошибку.
  2. Если ssh-порт 22 не открыт для подключения на управляемых узлах. (Как упоминалось ранее, Ansible подключается к порту ssh)
  3. Если IP-адрес в файле hosts неверен.

Если какое-либо из вышеуказанных условий не выполняется, вы столкнетесь с приведенной ниже ошибкой.

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

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

$sudo mkdir /etc/ansible/group_vars

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

Давайте создадим файл переменных для нашей настройки, выполнив следующую команду:

$sudo vim /etc/ansible/group_vars/node_servers.yml


Добавьте в файл приведенный ниже код:

---
ansible_ssh_user: james

Файл YML всегда начинается с \---\ в первой строке. Давайте сохраним и закроем этот файл, когда вы закончите. Теперь Ansible всегда будет использовать пользователя james для группы node_servers, независимо от текущего пользователя, которого вы используете для запуска команды.

Проверьте подключение управляемых узлов:

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

$ansible -m ping servers 

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

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

хост3 | УСПЕХ => {    changed: false,    ping: pong}

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

Заключение:

Нет необходимости использовать операционную систему CentOS для управляемых узлов. Вы можете использовать ту же тестовую конфигурацию, которую мы использовали выше для CentOS, RedHat, Ubuntu и любых других дистрибутивов Linux.