Установите и настройте 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.
Примечание:
- Вы не можете использовать Windows в качестве узла контроллера.
- Можно настроить несколько узлов контроллера.
Прежде чем начать работу с 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 можно двумя способами.
- Использование менеджера пакетов операционной системы
- Использование 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.
Ansible.cfg
— файл конфигурации ansible.Хосты
— файл инвентаризации, в котором указаны сведения о хосте.
Что ж, обсудите более подробно файлы конфигурации и инвентаризации в отдельной статье. На данный момент, чтобы запустить первую команду 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