Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

iac-timeweb

NotificationsYou must be signed in to change notification settings

akmalovaa/iac-timeweb

Repository files navigation

Репозиторий для экспериментов с IaC Timeweb

Цель:

Подготовить и запустить сервер с сервисами в docker-compose, используя простые подходы IaC для автоматизации

  • Заказать VPS
  • Установить docker, docker compose
  • Загрузить docker-compose.yaml и файлы конфигураций сервисов
  • Запустить

Описание

Сервер для мониторинга

В качестве примера сервиса вdocker-compose буду использоватьGatus

Дополнительно рядом добавлю сервисыPrometheus +Grafana

Подготовка

Установка

Для автотизации буду использовать:

Можно установить локально или использовать готовый container image образ:docker pull ghcr.io/akmalovaa/iac-tools, где уже подготовил и собрал все необходимые компоненты

На локальной машине можно даже ничего не устанавливать кромеdocker

Далее в примерах буду использовать именно данный способ

Настройка

Учетная записьtimeweb

Войти или зарегистрироватьсяреф.ссылка

Настройка проекта

В качестве названия проекта используетсяhomelab нужносоздать такой же или

поменять на свой проект в настройкахterraform/main.tf

data "twc_projects" "terraform-project" {  name = "homelab"}

SSH key

Создать новые или использовать уже сгенерированные ранее ключи

  • private_key: Используется для удобства подключения и работы Ansible
  • public_key: Добавляется на сервер при его создании

Необходимо свойpublic_key добавить впанель управления назвалmonitoring

Используется вterraform/main.tf

data "twc_ssh_keys" "ssh-key" {  name = "monitoring"}

private_key - для ansible использовать в >ansible/ssh/id_rsa

API keys

Создать здесьhttps://timeweb.cloud/my/api-keys

Использовать в переменных окруженияTF_VAR_TWC_TOKEN или создать файлterraform/env.auto.tfvars

TWC_TOKEN ="eyJhbGcsaohjdshoaohgasgashod..."

Настройка сервера

Основные настройки в файлеterraform/main.tf

Пример фиксированной настройки сервера по цене

data "twc_presets" "main-preset" {  location = "ru-1"  price_filter {    from = 150    to = 200  }

Note

Если по заданным критериям не обнаружит нужного тарифа, сервер создаваться не будет

Все доступные варианты, удобнее смотреть в интерфейсе Timeweb Cloud, на первых шагах создания сервера, в разделе выбор тарифа

Фильтровать можно не только по стоимости, но и по требуемым ресурсам (CPU, RAM, disk) и гео-расположению

Настройка сервисов

Конфигурационные файлы иdocker-compose.yaml вынес в отдельную директорию

./services/

Данную директорию сделал полностью независимым.Есть возможность даже без IaC автоматизаций вручную скопировать данную директорию и запустить локально или на сервере.

Для удобства настройки и конфигурирования основные переменные вынесены в файл:

  • .gitab-variables.yaml

Запуск

Переменные подготовлены для запуска в gitlab ci/cdСкриптvariables-to-local.py создает файл.env для локального запускаdocker c нужными переменными окружения

python variables-to-local.py

Запуск контейнера в интерактивном режиме:

docker run --rm -it -v .:/srv --env-file .env ghcr.io/akmalovaa/iac-tools bash

Terraform

task terraform:all

Ansible

task ansible:play

Warning

При запуске terraform возможны проблемы из-за ограничений доступа из РФ

В результате выполнения, должны получить готовый VPS сервер по выбранному тарифу и запущенные сервисы:

  • {YOUR_IP}:8080 - Gatus
  • {YOUR_IP}:9090 - Prometheus
  • {YOUR_IP}:3000 - Grafana

TODO:

  • Добавитьdomain name через DNSCloudflare и привязать к новому IP - SSL cert и proxy (nginx, traefik или caddy)
  • Ansiblesync files вместоcopy
  • Изучитьterragrount
  • Оповещение вtelegram при завершении, что сервер поднялся и готов к работе (domain-name)

[8]ページ先頭

©2009-2025 Movatter.jp