From 26707c2ef3ce40b32be11adf1357022665ce41b6 Mon Sep 17 00:00:00 2001 From: LeoR156 <277007013+LeoR156@users.noreply.github.com> Date: Sat, 19 Sep 2026 18:35:46 +0500 Subject: [PATCH] Refactor README for consistency and clarity Updated formatting and language consistency in the README file. --- README.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 0fa4c7f..1b82dc9 100644 --- a/README.md +++ b/README.md @@ -8,35 +8,35 @@ ### ☁️ Infrastructure-as-Code проект для автоматического развертывания кластера мониторинга с нуля. Позволяет за 5 минут поднять сервера в облаке и накатить на них метрики. ### Стек :hammer_and_wrench:: -* :building_construction: __Terraform v1.16.2 on linux_amd64 - для создания ВМ в облаке Yandex Cloud.__ -* :rocket: __ansible [core 2.20.1] - для автоматической установки нужных компонентов и накатки конфигураций.__ -* :whale: __docker - для изоляции сервисов и запуска на любых машинах.__ -* :memo: __prometheus и node exporters - для опроса и получения метрик с целевых серверов.__ -* :bar_chart: __grafana - для красивой визуализации данных.__ +* :building_construction: Terraform v1.16.2 on linux_amd64 - для создания ВМ в облаке Yandex Cloud. +* :rocket: ansible [core 2.20.1] - для автоматической установки нужных компонентов и накатки конфигураций. +* :whale: docker - для изоляции сервисов и запуска на любых машинах. +* :memo: prometheus и node exporters - для опроса и получения метрик с целевых серверов. +* :bar_chart: grafana - для красивой визуализации данных. *** ## Краткая архитектура 💡 -* Главный сервер (general_server): настраивается вручную, вписывается первым под группой `servers` в inventory и настраивается в файле `general_server.yml`, который должен быть расположен в папке __host_vars__. -* Terraform идёт в облако Yandex Cloud и поднимает нужное количество серверов (настраивается в `variable.tf`). После развертывания серверов создает inventory-файл с настройками каждой машины в папке __host_vars__, чтобы запустить плейбук можно было без ручного ввода. -* Ansible получает готовую конфигурацию и идёт на `general_server`, чтобы поднять два контейнера: **Prometheus и Grafana**. Он динамически подставляет переменные из папки __group_vars__, чтобы контейнеры получили готовую конфигурацию. Затем он идёт на остальные сервера, ставит `node_exporter` с официального репозитория на GitHub, настраивает **systemd** службу и автозапуск. +* Главный сервер (general_server): настраивается вручную, вписывается первым под группой `servers` в inventory-файл и настраивается в файле **general_server.yml**, который должен быть расположен в папке **host_vars**. +* Terraform идёт в облако Yandex Cloud и поднимает нужное количество серверов (настраивается в файле **variable.tf**). После развертывания серверов создает inventory-файл с настройками каждой машины в папке **host_vars**, чтобы запустить плейбук можно было без ручного ввода. +* Ansible получает готовую конфигурацию и идёт на general_server, чтобы поднять два контейнера: Prometheus и Grafana. Он динамически подставляет переменные из папки **group_vars**, чтобы контейнеры получили готовую конфигурацию. Затем он идёт на остальные сервера, ставит node_exporter с официального репозитория на GitHub, настраивает systemd-службу и автозапуск. ## Безопасность 🔒: -* Пароли и логины хранятся в папке __group_vars__ в файле `vault.yml`, который, в свою очередь, зашифрован мастер-паролем хранилища **Ansible Vault**. -* Сразу настраивается **basic_auth** на всех сервисах: Grafana, Ansible, Node_Exporters. -* Стейт Terraform и ключи **игнорируются** Git. -* Подключение к серверам идёт строго по **SSH-ключам**. +* Пароли и логины хранятся в папке **group_vars** в файле **vault.yml**, который, в свою очередь, зашифрован мастер-паролем хранилища Ansible Vault. +* Сразу настраивается basic_auth на всех сервисах: Grafana, Ansible, Node_Exporters. +* Стейт Terraform и ключи игнорируются Git. +* Подключение к серверам идёт строго по SSH-ключам. *** ## Быстрый старт 🚀: ### Вам понадобится: -* Аккаунт Yandex Cloud с ключами. Можно получить тут: Консоль Yandex Cloud. Поместите ключи в папку __terraform-infra__ -* Операционная система Linux с установленной на ней terraform, ansible и git. Команда для установки (**работает на Ubuntu и Debian**): `sudo apt update && sudo apt install -y ansible terraform git` +* Аккаунт Yandex Cloud с ключами. Можно получить тут: Консоль Yandex Cloud. Поместите ключи в папку **terraform-infra**. +* Операционная система Linux с установленной на ней terraform, ansible и git. Команда для установки (работает на Ubuntu и Debian): `sudo apt update && sudo apt install -y ansible terraform git` ### Конкретные действия для развёртывания: * Клонируйте и перейдите в скачанный репозиторий командой: `git clone https://github.com/LeoR156/metrics-prometheus-grafana && cd metrics-prometheus-grafana/group_vars/all/` -* Откройте `vault.yml` и сотрите содержимое командой: `> vault.yml && nano vault.yml`. +* Откройте файл **vault.yml** и сотрите содержимое командой: `> vault.yml && nano vault.yml`. * Напишите туда ваши реальные данные по шаблону c сохранением кавычек: ```yaml grafana_admin_user: "ваш_логин_для_grafana" @@ -51,23 +51,23 @@ exporter_password: "ваш_пароль_для_exporters" * Примените изменения: `Ctrl + X`, `Y` и `Enter`. * Желательно применить шифрование командой: `ansible-vault encrypt vault.yml`. Придумайте и введите пароль. ⚠️ **Важно:** *Если шифруете, то запомните пароль, иначе для его просмотра нужно будет расшифровать файл командой `ansible-vault decrypt <путь_и_имя_файла>`*. -* Вернитесь на две папки выше командой `cd ../..` и перейдите в папку __host_vars__ командой `cd host_vars/`. Создайте файл `general_server.yml` и введите туда данные командой `nano general_server.yml` (**с сохранением кавычек**): +* Вернитесь на две папки выше командой `cd ../..` и перейдите в папку **host_vars** командой `cd host_vars/`. Создайте файл **general_server.yml** и введите туда данные командой `nano general_server.yml` (**с сохранением кавычек**): ```yaml ansible_host: "ваш_IP_главного_сервера" ansible_user: "ваш_юзер" ansible_ssh_private_key_file: "путь_до_ssh_ключа" ``` * Примените изменения: `Ctrl + X`, `Y` и `Enter`. -* Переместитесь в папку __terraform-infra__ командами: `cd .. && cd terraform-infra/` +* Переместитесь в папку **terraform-infra** командами: `cd .. && cd terraform-infra/` ⚠️ **Убедитесь, что файл с ключами Яндекса находится именно в этой папке!** * Скачайте плагины провайдера командой `terraform init`. Дождитесь полной загрузки. По окончании убедитесь, что установка прошла корректно (сообщение `Terraform has been successfully initialized!`). -* Выполните `terraform plan` — предварительно ознакомиться с изменениями. Затем `terraform apply` — применить изменения (нужно ввести **yes**). Дождитесь, пока Terraform закончит свою работу. -* Вернитесь в корень проекта командой `cd ..` и запустите плейбук: `ansible-playbook -i terraform-infra/inventory.ini playbook.yml --ask-vault-pass` *(введите пароль, если задавали его ранее)*. +* Выполните команду `terraform plan`, чтобы предварительно ознакомиться с изменениями. Затем команду `terraform apply`, чтобы применить изменения (нужно ввести `yes`). Дождитесь, пока Terraform закончит свою работу. +* Вернитесь в корень проекта командой `cd ..` и запустите плейбук командой: `ansible-playbook -i terraform-infra/inventory.ini playbook.yml --ask-vault-pass` *(введите пароль, если задавали его ранее)*. * Пару-тройку минут — и Ansible сделает свою работу! ### Подключение и первый дашборд: -* Зайдите на IP `general_server`, порт 3001. Шаблон: `http://:3001` -* Введите логин и пароль от **Grafana**, который вы задавали ранее в файле `vault.yml`. +* Зайдите на IP главного сервера, порт 3001. Шаблон: `http://:3001` +* Введите логин и пароль от Grafana, который вы задавали ранее в файле **vault.yml**. * Зайдите на вкладку **Dashboards** слева экрана > нажмите **New** справа > нажмите **Import dashboard** > вставьте ID `1860` и нажмите **Load** > затем снова **Import**. #### Готово! Метрики настроены.