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

Установите и настройте Ansible в Linux

Это пошаговое руководство проведет вас через шаги по установке и настройке Ansible в Linux. Здесь также объясняется, как настроить домашнюю лабораторию Ansible в Linux для изучения основ Ansible.

1. Введение

Ansible — это инструмент автоматизации ИТ, с помощью которого вы можете автоматизировать N задач в вашей программной среде. Чтобы узнать, что такое Ansible и его возможности, ознакомьтесь с нашим Введение в Ansible.

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

Ansible — это безагентная архитектура. Это означает, что на управляемых узлах не работают никакие агенты/процессы.

Как я уже упоминал во вступительной статье Ansile, в Ansible есть два типа узлов.

  • Главный/контроллерный узел — сервер/рабочая станция, на которой будет установлен ansible. Из этого узла вы будете запускать все ansible playbooks и ansible команды.
  • Управляемые узлы — список хостов, управление которыми будет осуществляться с помощью ansible.

Все управляемые узлы не обязательно должны работать с одной и той же версией или типом дистрибутива. В качестве управляемых узлов можно использовать разные версии Linux.

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

Это практическое руководство научит вас, как настроить лабораторию Ansible в дистрибутивах Linux.

Примечание:

  1. Вы не можете использовать Windows в качестве узла контроллера.
  2. Можно настроить несколько узлов контроллера.

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

2. Архитектурная схема трехузловой Ansible Lab.

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

Настройка моей домашней лаборатории Ansible

В демонстрационных целях я настраиваю узел контроллера в Ubuntu 20.04 и два управляемых узла в CentOS 8 и Ubuntu 21.04.

3. Установите и настройте Ansible в Linux

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

3.1. Установите Ansible в Linux

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

К счастью, все дистрибутивы Linux поставляются с предустановленным Python. Ansible поддерживает как Python 2.7, так и Python 3.5 и выше.

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

$ which python python2 python3
/usr/bin/python2
/usr/bin/python3

Проверьте версию Python:

$ python2 --version
Python 2.7.18rc1
$ python3 --version
Python 3.8.5
$ compgen -c python | grep -P '^python..\d'
python3.8
python3.8-config
python2.7

Установить ansible в Linux можно двумя способами.

  1. Использование менеджера пакетов операционной системы
  2. Использование PIP — менеджера пакетов Python

3.1.1. Установите Ansible с помощью системного менеджера пакетов.

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

Установите Ansible в Arch Linux, EndeavourOS, Manjaro Linux:

sudo pacman -S ansible

Дебиан:

Отредактируйте файл /etc/apt/sources.list:

sudo nano /etc/apt/sources.list

Добавьте следующую строку:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main

Затем выполните следующие команды:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
sudo apt update
sudo apt install ansible

Федора:

sudo dnf install ansible

CentOS, RHEL, AlmaLinux, Rocky Linux:

sudo dnf install epel-release
sudo dnf install ansible

Ubuntu и ее производные:

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

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

3.1.2. Установите Ansible с помощью Pip

Сначала проверьте, установлен ли PIP, выполнив следующие команды:

$ which pip pip3
/usr/bin/pip
/usr/bin/pip3
$ pip --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
$ pip3 --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

Если PIP не установлен, выполните следующие команды, чтобы установить его.

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --user

После установки PIP выполните следующую команду для установки ansible:

sudo python3 -m pip install ansible

Это установит последнюю версию Ansible.

Вы также можете установить определенную версию Ansible, например 2.9, как показано ниже:

sudo python3 -m pip install 'ansible==2.9'

После установки Ansible выполните следующую команду, чтобы проверить версию Ansible:

ansible --version

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

Пример вывода:

ansible 2.9.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/karthick/.ansible/plugins/modules',
  '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]

3.2. Настроить Ансибл

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

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

3.2.1. Создайте пару ключей SSH для управляемых узлов.

Создайте нового пользователя с именем ansible как на контроллере, так и на управляемых узлах.

sudo useradd ansible               ##create user 
sudo passwd ansible                ##set password for ansible user.

Войдите/переключитесь как пользователь ansible и создайте пару ключей ssh, используя команды:

su - ansible
ssh-keygen -t rsa

Эта команда сгенерирует пару ключей SSH.

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

Вы можете использовать команду ssh-copy-id, чтобы скопировать открытый ключ на целевой узел.

Чтобы скопировать открытый ключ на целевой узел с помощью команды ssh-copy-id, выполните:

ssh-copy-id -i ~/.ssh/id_rsa ansible@host-name

Если у вас больше узлов, используйте цикл for, чтобы скопировать ключ ssh на все целевые узлы.

Для целей данного руководства у меня есть два управляемых узла, и я назвал их centos1 (centos8) и ubuntu1 (ubuntu 20.04). Чтобы скопировать ключ на оба узла, я использовал следующий код:

for node in centos1 ubuntu1; do ssh-copy-id -i /home/ansible/.ssh/id_rsa ansible@${node} done

Скопируйте ключи SSH на целевые узлы

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

ssh username@hostname

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

3.2.2. Тестирование конфигурации Ansible

В Ansible есть два важных файла, которые необходимы для отправки команд Adhoc или playbook.

  1. Ansible.cfg — файл конфигурации ansible.
  2. Хосты — файл инвентаризации, в котором указаны сведения о хосте.

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

Файл конфигурации Ansible находится в файле /etc/ansible/ansible.cfg. Вы также можете получить эту информацию, выполнив команду ansible version:

$ ansible --version
ansible 2.9.0
 config file = /etc/ansible/ansible.cfg
 configured module search path = ['/home/karthick/.ansible/plugins/modules',
'/usr/share/ansible/plugins/modules']
 ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
 executable location = /usr/local/bin/ansible
 python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]

Откройте файл ansible.cfg и найдите список параметров. Ansible будет обращаться к этому параметру во время выполнения для получения пути к файлу инвентаризации.

$ sudo grep -iw "^#Inventory" /etc/ansible/ansible.cfg
#inventory        = /etc/ansible/hosts

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

У меня есть сопоставление DNS с IP, поэтому я указал имя DNS в файле хоста. Вы также можете указать IP-адрес.

Файл инвентаризации Ansible

Все настроено для запуска нашей задачи в ansible!

Подобно программе "Hello world" в программировании, ansible также имеет традицию запуска ping в качестве первой команды для проверки соединения между контроллером и управляемыми узлами.

Модуль ping попытается связаться с управляемыми узлами и проверить, доступен ли какой-либо интерпретатор Python, и ответить как понг.

ansible all -m ping

Вы также можете явно указать файл хостов, используя флаг -i, как показано ниже:

ansible all -m ping -i flag <path-to-host-file>

Модуль Ansible Ping

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

Если вы хотите добавить больше узлов контроллера, все, что вам нужно сделать, это скопировать ключ SSH с узла контроллера на новый узел и добавить запись IP/DNS в файл хоста. И затем ansible может начать подхватывать вновь добавленный управляемый узел. Это так просто!

Заключение

В этом руководстве мы обсудили, как установить и настроить Ansible в Linux. Мы также показали вам, как вручную настроить домашнюю лабораторию Ansible с тремя узлами.

Существуют и другие автоматизированные решения, например настройка лаборатории ansible с помощью Vagrant или Docker. Мы рассмотрим эти темы в наших следующих статьях.

Ansible — это обширная тема! Мы рассмотрели только основы Ansible. Ознакомьтесь с официальной документацией Ansible, чтобы узнать больше об использовании Ansible.

Читать далее:

  • Автоматическая установка Ansible Lab с Vagrant и Virtualbox в Linux
  • Файлы инвентаризации и конфигурации Ansible

Статьи по данной тематике