В этом лабораторном занятии вы узнаете, как установить и настроить Ansible на системе Ubuntu. Ansible - это мощный открытый инструмент автоматизации, который упрощает управление конфигурацией, развертывание приложений и автоматизацию задач. К концу этого лабораторного занятия у вас будет установлен и настроен Ansible, готовый к эффективному управлению удаленными системами.
Обновление пакетов системы
Перед установкой любого нового программного обеспечения важно убедиться, что ваша система имеет последние обновления. Это помогает предотвратить возможные конфликты и гарантирует, что у вас есть последние патчи безопасности.
Сначала обновите списки пакетов:
sudo apt update
Эта команда подключается к программным репозиториям Ubuntu и загружает информацию о последних доступных пакетах. Вы можете увидеть такой вывод:
Hit:1 http://mirrors.cloud.aliyuncs.com/ubuntu jammy InRelease
Hit:2 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-updates InRelease
Hit:3 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-backports InRelease
Hit:4 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
Не беспокойтесь, если вы увидите строки с "Hit" или "Get" - это нормально и показывает, какая информация о репозитории обновляется.
Установка Ansible
Теперь, когда ваша система обновлена, вы можете приступить к установке Ansible. В стандартных репозиториях Ubuntu уже есть Ansible, что делает процесс установки простым.
Установите Ansible с помощью следующей команды:
sudo apt install ansible -y
Разберем эту команду по частям:
sudo: Эта команда запускает команду с административными привилегиями, что необходимо для установки программного обеспечения.
apt install: Это указывает менеджеру пакетов установить новый пакет.
ansible: Это имя пакета, который мы хотим установить.
-y: Этот флаг автоматически отвечает "да" на любые запросы во время установки.
Вы увидите вывод, показывающий ход установки:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
...
Processing triggers for man-db (2.10.2-1)...
Не пугайтесь большого количества текста - это просто показывает все зависимости, которые устанавливаются вместе с Ansible.
После завершения установки хорошей практикой будет проверить, что Ansible был установлен правильно. Вы можете сделать это, проверив его версию:
ansible --version
Эта команда должна отобразить информацию о установленной версии Ansible:
Если вы видите вывод, похожий на этот, поздравляем! Теперь Ansible установлен на вашей системе.
Настройка SSH для Ansible
Ansible использует SSH для связи с управляемыми узлами. Чтобы упростить этот процесс и повысить безопасность, мы настроим аутентификацию на основе SSH-ключей. Это позволит Ansible подключаться к другим машинам без необходимости каждый раз вводить пароль.
Сначала сгенерируйте пару SSH-ключей:
ssh-keygen -t rsa -b 4096 -C "labex@example.com"
Разберем эту команду:
ssh-keygen: Это программа, которая генерирует пару ключей.
-t rsa: Это указывает, что мы хотим ключ типа RSA.
-b 4096: Это устанавливает размер ключа в 4096 бит, что очень безопасно.
-C "labex@example.com": Это добавляет комментарий к ключу, обычно адрес электронной почты.
При выполнении этой команды вы увидите запросы:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/labex/.ssh/id_rsa):
Нажмите Enter, чтобы принять местоположение по умолчанию.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Для этой лабораторной работы вы можете оставить парольную фразу пустой, дважды нажав Enter. В производственной среде вам следует использовать надежную парольную фразу (passphrase).
Вы увидите вывод, подтверждающий создание ключа:
Your identification has been saved in /home/labex/.ssh/id_rsa
Your public key has been saved in /home/labex/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:abcdefghijklmnopqrstuvwxyz1234567890ABCDEFG labex@example.com
The key's randomart image is:
+---[RSA 4096]----+
| . |
| . . |
| o |
| . o |
| + = S |
| + * + |
| . = o . |
| . + = |
| +.+. |
+----[SHA256]-----+
Далее нам нужно скопировать этот ключ на локальную машину. В реальном сценарии вы бы скопировали его на удаленные хосты, но для этой лабораторной работы мы будем использовать локальную машину:
ssh-copy-id labex@localhost
Введите yes для продолжения.
Вам будет предложено ввести пароль пользователя labex.
Для этой лабораторной среды вы можете найти пароль, открыв VNC-терминал и выполнив:
Не закрывайте текущий сеанс терминала и откройте новый терминал Xfce, чтобы выполнить следующую команду:
echo $PASSWORD
Примечание: Вы должны выполнить эту команду в VNC-терминале. Пароль доступен только в VNC-терминале и недоступен через SSH или веб-терминал.
Введите пароль, когда будет предложено командой ssh-copy-id. Вы должны увидеть вывод, подобный следующему:
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
labex@localhost's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'labex@localhost'"
and check to make sure that only the key(s) you wanted were added.
Чтобы убедиться, что настройка SSH-ключа прошла успешно, попробуйте подключиться по SSH к локальной машине:
ssh labex@localhost
Если ключ был настроен правильно, вы сможете войти в систему без запроса пароля. Вы увидите новую командную строку. Введите exit, чтобы вернуться к исходному сеансу.
Создание и настройка инвентаря Ansible
Инвентарь Ansible - это файл, который определяет хосты и группы хостов, на которых выполняются команды, модули и задачи из плейбука. Это как адресная книга для Ansible, которая сообщает ему, к каким машинам он может подключаться.
Сначала создайте каталог для конфигурации Ansible:
sudo mkdir -p /etc/ansible
Эта команда создает каталог /etc/ansible, если он еще не существует. Флаг -p гарантирует, что не будет ошибки, если каталог уже есть.
Теперь создайте и откройте для редактирования файл инвентаря:
sudo nano /etc/ansible/hosts
Это откроет текстовый редактор nano. Если вы не знакомы с nano, не беспокойтесь - это простой и удобный в использовании редактор.
[local] и [webservers] - это имена групп. Вы можете использовать их для организации своих хостов.
localhost ansible_connection=local сообщает Ansible подключаться к локальной машине напрямую, без использования SSH.
web1 ansible_host=localhost ansible_connection=ssh ansible_user=labex настраивает хост с именем web1. В рамках этого лабораторного занятия он также подключается к localhost, но использует SSH и входит под пользователем labex.
Чтобы сохранить файл в nano, нажмите Ctrl+X, затем Y, а затем Enter.
Чтобы проверить содержимое файла инвентаря, используйте команду cat:
cat /etc/ansible/hosts
Вы должны увидеть содержимое, которое вы только что добавили в файл.
Тестирование подключения Ansible
Теперь, когда мы установили и настроили Ansible, давайте проверим подключение, чтобы убедиться, что все работает правильно.
Сначала отправим ping-запрос всем хостам в нашем инвентаре:
ansible all -m ping
Разберем эту команду по частям:
ansible: Это основная команда для запуска Ansible.
all: Это сообщает Ansible запустить операцию на всех хостах из инвентаря.
-m ping: Это указывает модуль Ansible, который нужно использовать. Модуль ping проверяет, отвечают ли хосты.
Если вы видите "SUCCESS" для обоих хостов, это означает, что Ansible может успешно подключиться к этим хостам и общаться с ними.
Далее попробуем выполнить простую команду на всех хостах:
ansible all -a "uptime"
Эта команда использует модуль command Ansible (по умолчанию используется, если не указан другой модуль с помощью -m) для выполнения команды uptime на всех хостах. Команда uptime показывает, как долго система работает.
Этот вывод показывает, что Ansible успешно выполнил команду uptime на обоих хостах. Статус "CHANGED" указывает, что команда была успешно выполнена и дала результат.
Совет: Вы можете увидеть предупреждение об устаревании "Distribution ubuntu 22.04 on host localhost should use /usr/bin/python3", которое появляется из-за изменения интерпретатора Python по умолчанию в новых версиях Ubuntu.
Если вы хотите скрыть это предупреждение, вы можете добавить следующую строку в файл /etc/ansible/hosts:
Эта строка сообщает Ansible явно использовать Python 3 для всех хостов. После добавления этой строки вы можете снова запустить команду ansible all -m ping, чтобы убедиться, что предупреждение больше не появляется.
Резюме
Поздравляем! В рамках этого лабораторного занятия вы успешно установили и настроили Ansible на системе Ubuntu. Вы научились:
Обновлять пакеты системы, чтобы обеспечить стабильную среду для Ansible.
Устанавливать Ansible с помощью менеджера пакетов.
Настраивать аутентификацию на основе SSH-ключей для безопасных и безпарольных подключений.
Создавать и настраивать файл инвентаря Ansible для определения управляемых хостов.
Тестировать подключение Ansible и выполнять базовые команды на управляемых хостах.
Эти основные шаги предоставляют прочный стартовый пункт для использования Ansible для автоматизации различных IT-задач, от простого выполнения команд до сложного управления конфигурацией и развертывания приложений.
Помните, что в этом лабораторном занятии для демонстрации использовался localhost, но в реальных сценариях вы обычно будете управлять несколькими удаленными хостами. Принципы и команды, которые вы здесь узнали, можно легко применить для управления удаленными серверами в своей инфраструктуре.
По мере продолжения изучения Ansible вы откроете его мощь в упрощении операций и повышении производительности в системном администрировании и практиках DevOps. Рекомендуем далее изучить плейбуки Ansible, которые позволяют автоматизировать более сложные задачи и рабочие процессы.