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

Цель: Настройка сервера и развертывание веб-сервера

Основная цель этого плейбука Ansible — настроить и управлять тремя серверами: двумя серверами Ubuntu (один действует как хост-сервер, а другой — как веб-сервер) и одним сервером CentOS. Используя Ansible, мы можем автоматизировать различные задачи, связанные с настройкой и обслуживанием этих серверов, экономя при этом время и усилия.

Ролевой подход

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

1. Роль Script Runner

Роль Script Runner позволяет выполнять сценарии bash или пользовательские команды на серверах по мере необходимости. Эта роль особенно полезна для запуска определенных сценариев или выполнения пользовательских операций в процессе настройки сервера.

Пример кода YAML для роли Script Runner:

- name: Execute custom script
 script:
 src: path/to/script.sh
 executable: /bin/bash
```
Плейбук с ролью Script Runner
Плейбук с ролью Script Runner

2. Роль Apache

Роль Apache устанавливает и настраивает веб-сервер Apache на серверах Ubuntu. Он запускает службу Apache и облегчает развертывание веб-приложений или статических файлов. С помощью этой роли вы можете легко настроить надежный и высокопроизводительный веб-сервер для размещения своих веб-сайтов или веб-приложений.

Пример кода YAML для роли Apache:

- name: Install Apache
 apt:
 name: apache2
 state: present

- name: Start Apache service
 service:
 name: apache2
 state: started
 enabled: true 
Плейбук с ролью Apache
Плейбук с ролью Apache

3. Роль Nginx

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

Пример кода YAML для роли Nginx:

- name: Install Nginx
 yum:
 name: nginx
 state: present

- name: Start Nginx service
 service:
 name: nginx
 state: started
 enabled: true
Плейбук с Nginx
Плейбук с Nginx

4. Роль Terraform

Роль Terraform фокусируется на установке Terraform на хост-сервере и управлении развертыванием инфраструктуры с помощью Terraform. Terraform — это популярный инструмент «инфраструктура как код». Он позволяет определять и выделять ресурсы инфраструктуры декларативным образом. Эта роль позволяет вам использовать возможности Terraform для эффективного управления вашей инфраструктурой.

Пример кода YAML для роли Terraform:

- name: Install Terraform
 get_url:
 url: https://releases.hashicorp.com/terraform/0.15.4/terraform_0.15.4_linux_amd64.zip
 dest: /tmp/terraform.zip

- name: Unzip Terraform
 unarchive:
 src: /tmp/terraform.zip
 dest: /usr/local/bin/
 remote_src: yes
 creates: /usr/local/bin/terraform

- name: Set Terraform permissions
 file: 
 path: /usr/local/bin/terraform
 mode: 0755
Плейбук с ролью Terraform
Плейбук с ролью Terraform

5. Роль Docker

Роль Docker связана с установкой Docker на хост-сервере и управлением контейнерами Docker. Docker предоставляет легкое и масштабируемое решение для развертывания приложений в изолированных контейнерах. Эта роль позволяет легко устанавливать Docker и управлять контейнерами, делая развертывание приложений более эффективным и надежным.

Пример кода YAML для роли Docker:

- name: Install Docker
 apt:
 name: docker.io
 state: present

- name: Start Docker service
 service:
 name: docker
 state: started
 enabled: true
Плейбук с ролью Docker
Плейбук с ролью Docker

Пошаговое выполнение

Теперь, когда мы определили роли, давайте рассмотрим пошаговое выполнение плейбука.

Шаг 1. Установите Ansible

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

Шаг 2. Настройка инвентаризации

Создайте файл инвентаризации, содержащий сведения о серверах, которые вы хотите настроить. Включите IP-адреса или имена хостов серверов вместе с любыми необходимыми параметрами подключения, такими как ключи SSH или имена пользователей.

Шаг 3. Создайте структуру плейбука

В каталоге вашего проекта создайте файл плейбука (например, playbook.yml), используя синтаксис YAML. Определите структуру плейбука, включая целевые хосты, сведения о подключении и исполняемые роли.

---
- hosts: all
  become: true
  gather_facts: true

  tasks:
 ...

  roles:
    - script-runner
    - apache
    - nginx
    - terraform
    - docker
 ... 

Шаг 4. Определите хосты и сведения о подключении

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

Шаг 5. Организуйте задачи в роли

Создайте роль, используйте следующую команду:

ansible-galaxy init role_name
ansible-galaxy init apache_role

Шаг 6. Определите переменные

Чтобы сделать плейбук более динамичным, определите переменные на разных уровнях, например переменные на уровне плейбука или на уровне роли, исходя из ваших конкретных требований.

Шаг 7. Напишите задачи внутри ролей

В каталоге tasks каждой роли создайте файлы YAML, содержащие задачи, которые нужно выполнить. Определите необходимые действия для каждой роли, такие как установка пакетов, настройка служб или копирование файлов. Используйте обширную библиотеку модулей Ansible для упрощения сложных задач.

Шаг 8. Включите роли в плейбук

В основной файл playbook включите роли, которые вы создали, указав их имена в разделе «roles». Убедитесь, что роли перечислены в желаемом порядке выполнения.

Шаг 9. Запустите Playbook

Чтобы запустить Ansible playbook, используйте следующую команду:

Command: ansible-playbook playbook.yml (add “— ask-become-pass” to enter server password if any, else, the play will fail)
Example: ansible-playbook site.yml
Запуск плейбука
Запуск плейбука

Шаг 10. Проверка результатов

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

To create a user:
Command: adduser username
Example: adduser john
To verify user details:
Command: cat /etc/passwd
Example: cat /etc/passwd
Пользователь успешно создан
Пользователь успешно создан

Шаг 11. Вход на удаленные серверы

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

Command: ssh username@server_ip
Example: ssh john@192.168.1.100
Пользователь успешно вошел
Пользователь успешно вошел

Шаг 12. Тест подключения.

Чтобы проверить, доступен ли сервер, используйте команду ping:

Command: ansible <server_ip> -m ping
Example: ping 192.168.1.100 (OR) ansible all -m ping

Заключение

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

Страница Apache при успешном запуске плейбука
Страница Apache при успешном запуске плейбука
Веб-страница успешно задеплоина
Веб-страница успешно задеплоина

Будь то установка пакетов, настройка служб или деплой веб-приложений, Ansible предлагает гибкое и масштабируемое решение для автоматизации управления сервером. Благодаря шагам, описанным в этом руководстве, вы теперь готовы создавать и выполнять плейбуки Ansible.

Удачной автоматизации!


Узнать больше про плейбуки и деплой с помощью Ansible можно в Слёрме на курсе «Ansible: Infrastructure as Code». Старт потока — 5 июня.

Записаться на курс ???? на нашем сайте.

Комментарии (1)


  1. Yusmit
    01.06.2023 16:19
    +4

    200 пост о том что такое ansible и как его пускать. И сотый перевод о том что это такое