Введение:
Ansible — это инструмент автоматизации IT с открытым исходным кодом, который помогает автоматизировать повторяющиеся задачи и упрощает сложные конфигурации. С помощью Ansible вы можете автоматизировать все, начиная от развертывания приложений и заканчивая конфигурацией сети и оркестрацией контейнеров. Он не требует наличия агента, что означает, что вам не нужно устанавливать какое-либо программное обеспечение на узлах, которые вы хотите управлять, что облегчает его использование и поддержку. Ansible использует простой язык YAML для определения задач, что делает его легким в обучении и использовании.
В этой статье блога мы рассмотрим Ansible и его основные концепции, включая архитектуру, модули, плейбуки и Inventory. Мы также рассмотрим несколько примеров, чтобы продемонстрировать, как использовать Ansible для автоматизации общих задач в области IT.
Архитектура Ansible:
Ansible следует архитектуре клиент-сервер, где сервер (также называемый контрольной машиной) управляет клиентами (также называемыми узлами) с использованием протоколов SSH или WinRM (Windows Remote Management). На сервере находится набор модулей, которые определяют задачи, выполняемые на узлах. Когда сервер получает команду, он компилирует модуль и отправляет его на узлы. Узлы затем выполняют модуль и сообщают результаты серверу.

Модули Ansible:
Модули являются строительными блоками Ansible и используются для выполнения задач на удаленных системах. Ansible предоставляет широкий спектр модулей, которые могут использоваться для выполнения различных задач, таких как управление файлами, установка пакетов и конфигурация служб.
Вот пример использования модуля file для создания каталога на удаленном хосте:
- name: Create a directory
hosts: webserver
tasks:
- name: Create a directory
file:
path: /var/www/myapp
state: directory
В этом примере у нас есть плейбук с одной задачей, использующей модуль file для создания каталога на удаленном хосте. Параметр path указывает путь к создаваемому каталогу, а параметр state говорит Ansible создать каталог, если его нет.
Плейбуки Ansible:
Плейбуки — это файлы YAML, которые описывают задачи, которые должен выполнять Ansible. Плейбуки состоят из одной или нескольких игр, и каждая игра состоит из одной или нескольких задач. Плейбуки используются для автоматизации сложных задач, таких как развертывание приложений, управление инфраструктурой и управление конфигурацией.
Вот пример плейбука Ansible, который устанавливает Apache на удаленный хост:
- name: Install Apache
hosts: your_remote_host
become: true
tasks:
- name: Update apt package cache
apt:
update_cache: yes
- name: Install Apache
apt:
name: apache2
state: present
- name: Start Apache service
service:
name: apache2
state: started
enabled: yes
Пояснения:
1. name: Это простое и понятное описание плейбука. В данном случае — «Установка Apache».
2. hosts: Указывает целевой хост или группу хостов, на которых должны выполняться задачи. Замените ` your_remote_host ` на фактическое имя или IP-адрес вашего удаленного хоста.
3. become: Ansible использует это для определения привилегий. Когда установлено значение `true`, это означает, что задачи будут выполнены с использованием sudo или от имени пользователя root.
4. tasks: Это список задач, которые Ansible выполнит на указанных хостах:
— Update apt package cache: Гарантирует, что кеш пакетов обновлен перед попыткой установки Apache.
— Install Apache: Использует модуль `apt` для установки пакета `apache2`. Параметр `state: present` гарантирует, что он установлен.
— Start Apache service: Использует модуль `service` для запуска службы Apache и включает ее для автозапуска (`enabled: yes`).
Чтобы использовать этот плейбук, сохраните его в файл (например, `install_apache.yml`) и выполните следующую команду:
bash
ansible-playbook install_apache.yml
Этот плейбук предполагает, что вы работаете с Debian/Ubuntu системой; соответственно, измените менеджер пакетов (используйте `yum` для систем, основанных на Red Hat) и задачи управления службой, если вы используете другое распределение.
Inventory Ansible:
Inventory — это списки хостов, которыми должен управлять Ansible. Inventory могут быть статическими, где список хостов захардкожен в файле, или динамическими, где Ansible динамически обнаруживает хосты для управления.
Вот пример статического файла инвентаря:
[webservers]
webserver1 ansible_host=192.168.1.10
webserver2 ansible_host=192.168.1.11
[databases]
dbserver1 ansible_host=192.168.1.20
dbserver2 ansible_host=192.168.1.21
Команды Ansible:
Ansible предоставляет набор команд CLI, которые можно использовать для управления системой. Вот несколько часто используемых команд:
— ansible: Выполняет команды на целевых хостах.
— ansible-playbook: Выполняет плейбуки на целевых хостах.
— ansible-galaxy: Управляет ролями Ansible из репозитория Galaxy.
Далее давайте пройдем по шагам и изучим как установить и настроить Ansible на вашем виртуальном сервере.
Шаг 1: Подключение к виртуальному серверу
Подключитесь к вашему виртуальному серверу, используя SSH-клиент, такой как PuTTY или встроенный SSH-клиент в Linux/Mac. Убедитесь, что вы вошли в систему от имени пользователя с правами sudo.
Шаг 2: Обновление операционной системы
Выполните следующую команду для обновления операционной системы:
sudo yum update -y

Шаг 3: Установка Ansible
sudo install epel -y

Затем выполните следующую команду для установки Ansible:
sudo yum install ansible -y

Шаг 4: Проверка установки
Выполните следующую команду, чтобы проверить, что Ansible установлен:
ansible –version
Вы должны увидеть такое сообщение:

Шаг 5: Настройка Ansible
По умолчанию Ansible ищет файлы конфигурации в каталоге /etc/ansible. Вы можете изменить файлы конфигурации по своему усмотрению. Например, вы можете указать IP-адрес или имя хоста целевых серверов, пользователя SSH и SSH-ключ.
sudo vi /etc/ansible/hosts
Добавьте IP-адреса или имена хостов целевых серверов в файл hosts. Например:
[webservers]
10.0.0.1
10.0.0.2
[database]
10.0.0.3
Сохраните файл и закройте.
Шаг 6: Тестирование Ansible
Выполните следующую команду для тестирования Ansible:
ansible all -m ping
Вы должны получить такой ответ:
10.0.0.1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
10.0.0.2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
10.0.0.3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Это означает, что Ansible может подключаться к целевым серверам и выполнять команды.
Шаг 7: Создание файла плейбука
Создайте новый файл с именем playbook.yml с помощью следующей команды:
sudo vi /home/ec2-user/playbook.yml
Шаг 8: Добавление задач в плейбук
В этом примере мы создадим учетную запись пользователя, установим пакет и добавим строку в файл.
- name: Configure server
hosts: webservers
become: true
tasks:
- name: Create user account
user:
name: john
password: "{{ 'secretpassword' | password_hash('sha512') }}"
comment: John Doe
shell: /bin/bash
- name: Install package
yum:
name: httpd
state: present
- name: Add line to file
lineinfile:
path: /etc/httpd/conf/httpd.conf
line: Listen 8080
Сохраните файл и закройте.
Шаг 9: Запуск плейбука
Выполните следующую команду для выполнения плейбука:
ansible-playbook /home/ec2-user/playbook.yml
Ansible подключится к целевым серверам и выполнит задачи, определенные в плейбуке.
Это все! Вы успешно создали и выполнили простой плейбук с использованием Ansible. Теперь вы можете использовать Ansible для автоматизации более сложных задач на своих серверах.
Если вам нужна помощь в развертывании необходимого окружения с использованием Ansible, обратитесь в нашу компанию support.by. Мы можем проконсультировать вас и предложить наиболее оптимальный вариант виртуального или выделенного сервера для вашей задачи, а также помочь развернуть необходимое окружение с использованием Ansible.
Остались вопросы?
Свяжитесь с нами, мы с удовольствием Вас проконсультируем:
info@support.by
Понравилась статья? Хочешь получать еще больше полезного контента? Подписывайся на наш блог, будь в курсе последних новостей и интересных материалов из области хостинга и не только!