Как установить и настроить Ansible в Ubuntu 20.04 LTS

12 set 2022 5 min di lettura
Как установить и настроить Ansible в Ubuntu 20.04 LTS
Indice dei contenuti

Введение

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

Существует много популярных инструментов управления конфигурацией, доступных для систем Linux, таких как Chef и Puppet, они часто более сложны, чем многие люди хотят или нуждаются. Ansible — отличная альтернатива этим вариантам, поскольку он предлагает архитектуру, которая не требует установки специального программного обеспечения на узлах, использует SSH для запуска задач автоматизации и файлы YAML для определения деталей подготовки.

В этом руководстве мы обсудим, как установить Ansible на сервер Ubuntu 20.04 LTS Focal Fossa.

Предпосылки

Чтобы следовать этому руководству, вам понадобятся:

Ansible Control Node: Ansible Control Node — это машина, которую мы будем использовать для подключения и управления хостами Ansible через SSH. Узлом управления Ansible может быть ваш локальный компьютер или сервер, предназначенный для запуска Ansible, хотя в этом руководстве предполагается, что вашим узлом управления является система Ubuntu 20.04 LTS. Убедитесь, что управляющий узел имеет:

Один или несколько хостов Ansible: Хост Ansible — это любая машина, настроенная для автоматизации узла управления Ansible. В этом руководстве предполагается, что ваши хосты Ansible являются удаленными серверами Ubuntu 20.04 LTS. Убедитесь, что на каждом хосте Ansible есть:

  • Пара ключей SSH, связанная с этим пользователем.
  • Этот пользователь может быть root или обычным пользователем с привилегиями sudo.

Установить Ansible

Чтобы начать использовать Ansible в качестве средства управления серверной инфраструктурой, вам необходимо установить программное обеспечение Ansible на машину, которая будет действовать как узел управления Ansible. Для этого мы будем использовать репозитории Ubuntu по умолчанию.

Сначала обновите индекс пакетов вашей системы:

sudo apt update

После этого обновления вы можете установить программное обеспечение Ansible с помощью:

sudo apt install ansible

Нажмите Y, когда будет предложено подтвердить установку.

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

Настроить файл инвентаризации

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

Чтобы изменить содержимое инвентаря Ansible по умолчанию, откройте файл /etc/ansible/hosts с помощью предпочитаемого вами текстового редактора на узле управления Ansible:

sudo nano /etc/ansible/hosts
Примечаниеetc/ansible/hosts-i

Файл инвентаризации по умолчанию, предоставляемый при установке Ansible, содержит ряд примеров, которые можно использовать в качестве справочных материалов для настройки инвентаризации. В следующем примере определяется группа с именем [servers] с тремя разными серверами, каждый из которых определяется пользовательским псевдонимом: server1, server2 и server3. Обязательно замените выделенные IP-адреса IP-адресами ваших хостов Ansible.

[servers]
 server1 ansible_host=111.0.223.333
 server2 ansible_host=111.0.223.444
 server3 ansible_host=111.0.223.555

 [all:vars]
 ansible_python_interpreter=/usr/bin/python3
/etc/анзибл/хост

Подгруппа all:vars устанавливает параметр хоста ansible_python_interpreter, который будет действительным для всех хостов, включенных в этот список. Этот параметр гарантирует, что удаленный сервер использует исполняемый файл /usr/bin/python3 Python 3 вместо /usr/bin/python (Python 2.7), которого нет в последних выпусках Ubuntu.

Когда закончите, сохраните и закройте файл, нажав CTRL+X, затем Y и ENTER, чтобы подтвердить изменения.

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

ansible-inventory --list -y

Вы увидите вывод, похожий на этот, но содержащий инфраструктуру вашего сервера, как определено в вашем файле инвентаризации:

all:
 children:
 servers:
 hosts:
 server1:
 ansible_host: 203.0.113.111
 ansible_python_interpreter: /usr/bin/python3
 server2:
 ansible_host: 203.0.113.112
 ansible_python_interpreter: /usr/bin/python3
 server3:
 ansible_host: 203.0.113.113
 ansible_python_interpreter: /usr/bin/python3
 ungrouped: {}

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

Тест подключения

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

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

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

С локального компьютера или узла управления Ansible запустите:

ansible all -m ping -u root

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

  • доступны ли хосты;
  • если у вас есть действительные учетные данные SSH;
  • могут ли хосты запускать модули Ansible с помощью Python.

Вы должны получить вывод, подобный этому:

server1 | SUCCESS => {
 "changed": false,
 "ping": "pong"
 }
 server2 | SUCCESS => {
 "changed": false,
 "ping": "pong"
 }
 server3 | SUCCESS => {
 "changed": false,
 "ping": "pong"
 }

Если вы впервые подключаетесь к этим серверам через SSH, вас попросят подтвердить подлинность хостов, к которым вы подключаетесь через Ansible. При появлении запроса введите yes, а затем нажмите ENTER для подтверждения.

Когда вы получаете ответ "pong" от хоста, это означает, что вы готовы запускать команды Ansible и плейбуки на этом сервере.

Запуск специальных команд (необязательно)

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

Любая команда, которую вы обычно запускаете на удаленном сервере через SSH, может быть запущена с помощью Ansible на серверах, указанных в вашем файле инвентаризации. Например, вы можете проверить использование диска на всех серверах с помощью:

ansible all -a "df -h" -u root
server1 | CHANGED | rc=0 >>
 Filesystem Size Used Avail Use% Mounted on
 udev 3.9G 0 3.9G 0% /dev
 tmpfs 798M 624K 798M 1% /run
 /dev/vda1 155G 2.3G 153G 2% /tmpfs 3.9G 0 3.9G 0% /dev/shm
 tmpfs 5.0M 0 5.0M 0% /run/lock
 tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
 /dev/vda15 105M 3.6M 101M 4% /boot/efi
 tmpfs 798M 0 798M 0% /run/user/0

 server2 | CHANGED | rc=0 >>
 Filesystem Size Used Avail Use% Mounted on
 udev 2.0G 0 2.0G 0% /dev
 tmpfs 395M 608K 394M 1% /run
 /dev/vda1 78G 2.2G 76G 3% /tmpfs 2.0G 0 2.0G 0% /dev/shm
 tmpfs 5.0M 0 5.0M 0% /run/lock
 tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
 /dev/vda15 105M 3.6M 101M 4% /boot/efi
 tmpfs 395M 0 395M 0% /run/user/0...

df -h можно заменить любой командой по вашему желанию.

Вы также можете запускать модули Ansible с помощью специальных команд, аналогично тому, что вы делали ранее с модулем ping для проверки соединения. Например, вот как мы можем использовать модуль apt для установки последней версии vim на все серверы в вашем инвентаре:

ansible all -m apt -a "name=vim state=latest" -u root

Вы также можете ориентироваться на отдельные хосты, а также на группы и подгруппы при выполнении команд Ansible. Например, чтобы использовать команду uptime работы каждого хоста в группе servers, выполните следующую команду:

ansible servers -a "uptime" -u root

Мы можем указать несколько хостов, разделив их двоеточием:

ansible server1:server2 -m ping -u root

Вывод

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

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

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.