Admin Future
239 subscribers
50 photos
1 video
4 files
87 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
Git & Security: Перестань хранить пароли в plaintext. Знакомство с SOPS

Каждый админ хоть раз писал в скрипте PASSWORD="MySecretPassword123". Это прямая дорога к утечке данных, особенно если скрипт попадёт в Git. Архитектурный подход — хранить конфигурацию и код в Git, а секреты — шифровать.

SOPS (Secrets OPerationS) от Mozilla — элегантное решение этой проблемы. Он не шифрует весь файл, а только значения в нём, оставляя ключи в открытом виде. Это идеально для YAML, JSON, .env и .ini файлов.

Как это работает:
Вы создаёте обычный конфиг, а SOPS шифрует его с помощью PGP, age или облачных KMS (AWS, Azure, GCP). Зашифрованный файл можно смело коммитить в Git.

Практический пример с age (простой и современный инструмент шифрования):

Установка инструментов:

Bash

# macOS или Linux с Homebrew
brew install sops age

Генерация ключа:

Bash

age-keygen -o key.txt
# public key: age1...
# private key: AGE-SECRET-KEY-1...

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

Создаём файл с секретами config.yaml:

YAML

db_user: "postgres"
db_password: "SuperSecretPassword" # ЭТО БУДЕМ ШИФРОВАТЬ

Шифруем и редактируем:
Создаём в корне проекта файл .sops.yaml с правилами шифрования:

YAML

creation_rules:
- path_regex: .*.yaml$
age: age1... # Ваш публичный ключ

Теперь команда sops config.yaml откроет файл в вашем $EDITOR, а при сохранении автоматически зашифрует значения.

Результат в config.yaml:

YAML

db_user: "postgres"
db_password: "ENC[AES256_GCM,data:...,iv:...,tag:...]"
sops:
# ... метаданные sops

Файл можно безопасно коммитить в Git.

Как использовать в скрипте?

Bash

# Расшифровываем "на лету" и передаём в переменную
DB_CONFIG=$(sops -d config.yaml)
DB_PASSWORD=$(echo "$DB_CONFIG" | yq .db_password) # yq - парсер для yaml

Взгляд архитектора:
Это основа GitOps. Конфигурация, включая зашифрованные секреты, является «единственным источником правды». Изменения отслеживаются, а доступ к расшифровке имеют только те, у кого есть приватный ключ (люди или CI/CD системы).

#linux #security #gitops #devops #sops #architect
👍2
Ansible: Хватит хранить пароли в Git! Используем ansible-vault

Вы написали гениальный плейбук, но в group_vars/all.yml у вас лежит db_password: "MySuperSecretPassword123". Теперь этот плейбук нельзя безопасно положить в Git.

Ansible Vault — это не отдельный инструмент, это встроенный в Ansible механизм шифрования. Он позволяет шифровать не целые плейбуки, а только файлы с чувствительными данными (например, vars/secrets.yml).

Как это работает (магия в 3 команды):

Создаём зашифрованный файл: Вместо nano vars/secrets.yml вы пишете:

Bash
ansible-vault create vars/secrets.yml

Ansible попросит вас придумать пароль (vault password) и откроет редактор. Вы вводите свои секреты, сохраняете, и файл на диске оказывается полностью зашифрован.

Редактируем файл:

Bash
ansible-vault edit vars/secrets.yml

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

Запускаем плейбук: Ansible сам поймет, что файл зашифрован, и спросит пароль при запуске.

Bash
# Ansible спросит пароль в консоли
ansible-playbook site.yml

# ...или используем файл с паролем (для CI/CD)
ansible-playbook site.yml --vault-password-file ~/.vault_pass

Взгляд архитектора: Это и есть GitOps в действии. Ваши секреты хранятся вместе с кодом, они версионируются, но остаются в безопасности. Архитектор строит единый источник правды (Single Source of Truth). С ansible-vault ваш Git-репозиторий становится этим источником для всей инфраструктуры, включая пароли и ключи.

#linux #ansible #devops #security #iac #gitops #гайд
Что такое GitOps?

Это не "Git". Это принцип, при котором ваш Git-репозиторий — единственный источник правды.

Как это работает:

1. Инженер: Пушит config.yml в Git.

2. Автоматика (CI/CD): Видит изменение.

3. Система (Kubernetes/Ansible): Приводит инфраструктуру в соответствие с Git.

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

#architect #devops #gitops #git #iac #sre
Архитектура: "Docs as Code". Почему ваша документация — это ваш главный актив

Реакция админа: "У меня нет времени писать документацию".
Мысль архитектора: "У меня нет времени НЕ писать документацию".

Документация — это не "скучные Word-файлы".
В современном IT, документация — это код.

Что такое "Docs as Code":

Формат: Вы пишете в Markdown (.md). Это простой, чистый текст.

Хранилище: Вы храните .md файлы в Git-репозитории (на том же Gitea, что мы ставили) вместе с вашими скриптами и IaC-конфигами.

Инструменты: Вы используете MkDocs, Hugo или просто VS Code для рендеринга.

Почему это меняет всё:

Версионность: Ваша документация имеет историю. Вы видите, кто и когда изменил IP-адрес сервера в "runbook".

Runbooks: Вы не "чините по памяти". Вы открываете restore_db.md и копируете проверенные команды.

Схемы как Код: Вы рисуете диаграммы с помощью PlantUML или Mermaid — прямо текстом!

Масштабирование: Вы можете "форкнуть" документацию, предложить изменения через Pull Request.

Взгляд архитектора: Если вас "завтра уволят", а инфраструктура "умрет" через неделю, потому что никто не знает, "как оно работает" — вы были плохим архитектором. Документация — это ваш главный инструмент масштабирования вашего собственного мозга.

#architect #devops #gitops #documentation #sre #стратегия #гайд
👍5
🧠 Skill: "Terraform Drift Detection" — навык №1 в 2026 году ☁️

В эпоху IaC (Infrastructure as Code) самая большая проблема — это Drift (отклонение).
Это когда кто-то зашел в консоль AWS/Azure/Yandex руками и поменял тип инстанса или открыл порт, а в коде Terraform осталось старое значение.

Почему это опасно: При следующем запуске terraform apply твои ручные правки либо затрутся, либо всё упадет с ошибкой.

Что учить:

1. Terraform Plan Automation: Настрой запуск terraform plan в CI/CD раз в час.

2. Инструменты: Посмотри в сторону Driftctl или встроенного режима --refresh-only.

3. Команда для проверки "разрыва" между кодом и реальностью: terraform plan -refresh-only

Умение находить и устранять такие расхождения без даунтайма — это то, за что сегодня платят Senior DevOps инженерам. 🚀

#devops #terraform #iac #cloud #skills #automation #gitops