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
```
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
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
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
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
Пошаговое выполнение
Теперь, когда мы определили роли, давайте рассмотрим пошаговое выполнение плейбука.
Шаг 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 для эффективной настройки серверов и управления ими. Организуя задачи по ролям, мы можем упростить администрирование сервера и добиться согласованных и надежных конфигураций сервера.
Будь то установка пакетов, настройка служб или деплой веб-приложений, Ansible предлагает гибкое и масштабируемое решение для автоматизации управления сервером. Благодаря шагам, описанным в этом руководстве, вы теперь готовы создавать и выполнять плейбуки Ansible.
Удачной автоматизации!
Узнать больше про плейбуки и деплой с помощью Ansible можно в Слёрме на курсе «Ansible: Infrastructure as Code». Старт потока — 5 июня.
Записаться на курс ???? на нашем сайте.
Yusmit
200 пост о том что такое ansible и как его пускать. И сотый перевод о том что это такое