Установка Ansible на Ubuntu

AnsibleBeginner
Практиковаться сейчас

Введение

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

Обновление пакетов системы

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

Сначала обновите списки пакетов:

sudo apt update
Terminal updating package lists

Эта команда подключается к программным репозиториям 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 2.10.8
  config file = None
  configured module search path = ['/home/labex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.4.0]

Если вы видите вывод, похожий на этот, поздравляем! Теперь 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 для продолжения.

Prompt for labex user password

Вам будет предложено ввести пароль пользователя labex.

Для этой лабораторной среды вы можете найти пароль, открыв VNC-терминал и выполнив:

Не закрывайте текущий сеанс терминала и откройте новый терминал Xfce, чтобы выполнить следующую команду:

echo $PASSWORD

Примечание: Вы должны выполнить эту команду в VNC-терминале. Пароль доступен только в VNC-терминале и недоступен через SSH или веб-терминал.

SSH key copy prompt

Введите пароль, когда будет предложено командой 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]
localhost ansible_connection=local

[webservers]
web1 ansible_host=localhost ansible_connection=ssh ansible_user=labex

Разберем, что это значит:

  • [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 проверяет, отвечают ли хосты.

Вы должны увидеть вывод, похожий на следующий:

localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
web1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Если вы видите "SUCCESS" для обоих хостов, это означает, что Ansible может успешно подключиться к этим хостам и общаться с ними.

Далее попробуем выполнить простую команду на всех хостах:

ansible all -a "uptime"

Эта команда использует модуль command Ansible (по умолчанию используется, если не указан другой модуль с помощью -m) для выполнения команды uptime на всех хостах. Команда uptime показывает, как долго система работает.

Вы должны увидеть вывод, похожий на следующий:

localhost | CHANGED | rc=0 >>
 14:30:15 up 1 day,  3:24,  1 user,  load average: 0.00, 0.00, 0.00

web1 | CHANGED | rc=0 >>
 14:30:15 up 1 day,  3:24,  1 user,  load average: 0.00, 0.00, 0.00

Этот вывод показывает, что Ansible успешно выполнил команду uptime на обоих хостах. Статус "CHANGED" указывает, что команда была успешно выполнена и дала результат.

Совет: Вы можете увидеть предупреждение об устаревании "Distribution ubuntu 22.04 on host localhost should use /usr/bin/python3", которое появляется из-за изменения интерпретатора Python по умолчанию в новых версиях Ubuntu.

Если вы хотите скрыть это предупреждение, вы можете добавить следующую строку в файл /etc/ansible/hosts:

[all:vars]
ansible_python_interpreter=/usr/bin/python3

Эта строка сообщает Ansible явно использовать Python 3 для всех хостов. После добавления этой строки вы можете снова запустить команду ansible all -m ping, чтобы убедиться, что предупреждение больше не появляется.

Резюме

Поздравляем! В рамках этого лабораторного занятия вы успешно установили и настроили Ansible на системе Ubuntu. Вы научились:

  1. Обновлять пакеты системы, чтобы обеспечить стабильную среду для Ansible.
  2. Устанавливать Ansible с помощью менеджера пакетов.
  3. Настраивать аутентификацию на основе SSH-ключей для безопасных и безпарольных подключений.
  4. Создавать и настраивать файл инвентаря Ansible для определения управляемых хостов.
  5. Тестировать подключение Ansible и выполнять базовые команды на управляемых хостах.

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

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

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