Ansible – кроссплатформенная система управления конфигурацией

Иван Климарёв, преподаватель УЦ АйТи Клауд
по направлениям администрирование систем, DevOps, Менеджмент ИТ,
2022



  По мере повышения зрелости процессов управления ИТ, перед каждой организацией встаёт вопрос о инструменте управления конфигурацией.

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


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

Ключевые особенности Ansible:
  • Безагентный. На клиент не нужно устанавливать ПО, через которое клиент будет общаться с сервером
  • Идемпотентное. Независимо от того, сколько раз вы вызываете операцию, результат будет одинаковым.
  • Простое и расширяемое. Программа Ansible написанa на Python и использует YAML для написания команд. Оба языка считаются относительно простыми в изучении.
В качестве управляющего узла (машины, на которой работает Ansible) вы можете использовать почти любую UNIX-подобную машину с установленным Python 3.8 или новее. Сюда входят Red Hat, Debian, Ubuntu, macOS, BSD и Windows (с помощью подсистемы Windows для Linux (WSL)). Windows без WSL изначально не поддерживается в качестве управляющего узла.

В качестве клиента можно использовать множество систем и продуктов:
  • Windows
  • Linux
  • FreeBSD
  • Облачные ресурсы множества провайдеров, таких как VK Cloud, AWS, Azure и многие другие
  • Сетевое оборудование
  • Любая система, которая может принять ssh-соединение
Для работы с Ansible требуется совершить несколько шагов:

1) Для начала Ansible необходимо установить. Для Ubuntu команда установки будет выглядеть так:

$ Sudo apt install ansible

Для других операционных систем вы можете посмотреть инструкцию здесь - https://docs.ansible.com/ansible/latest/installation_guide/index.html

2) Далее необходимо подключиться к клиентской системе

Сначала генерируем ssh-ключ на сервере

Введение

Использование SSH-ключей — простой и надежный способ обеспечения безопасности соединения с сервером.  В отличие от пароля, взломать SSH-ключ практически невозможно. Сгенерировать SSH-ключ очень просто.

SSH-ключ для Linux/MacOS

Откройте терминал и выполните команду:

$ ssh-keygen -t rsa

На консоль будет выведен следующий диалог:

Enter file in which to save the key (/home/user/.ssh/id_rsa):

Нажмите на клавишу Enter. Далее система предложит ввести кодовую фразу для дополнительной защиты SSH-подключения:

Enter passphrase (empty for no passphrase):

Этот шаг можно пропустить. При ответе на этот и следующий вопрос просто нажмите клавишу Enter.

После этого ключ будет создан, а на консоль будет выведено сообщение

Далее выполните в терминале команду:

$ cat ~/.ssh/id_rsa.pub

И вы увидите ключ

Нужно скопировать ключ на клиент, либо файликом либо командой

ssh-copy-id ip-клиента

На клиенте установим openssh
sudo apt install openssh-server
в /etc/ssh/sshd_config раскоментировать строчки
PubkeyAuthentication yes
PermitRootLogin yes
не забудьте разрешить подключение
sudo ufw allow 22/tcp
перезапускаем сервис sshd
sudo systemctl restart ssh

3) Далее на управляющем сервере нужно создать папку с проектом и инвентаризационный файл

создадим папку проекта и перейдём в неё
mkdir ansible
cd ansible
создадим host.txt файл со списком клиентов
и введём инструкцию
[my_servers]
linux_client1 ansible_host= %вводим ip клиента% ansible_user=%имя юзера на клиенте% ansible_ssh_private_key_file= путь к файлу id_rsa, например /home/engineer/.ssh/id_rsa
проверяем работу ansible
ansible -i hosts.txt all -m ping
подтверждаем импорт ключей
мы должны получить ответ
"ping": "pong"

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

Вы можете пройти обучение по работе с Ansible в нашем учебном центре