# learn-devops ## Описание В этом репозитории собраны примеры из моего [YouTube канала](https://www.youtube.com/@fedor_batonogov). Тут я рассказываю о разных инструментах необходимых для **DevOps специалиста** и делюсь опытом. ## Мы стремимся подходу **Инфраструктура как код** Основная идея **Infrastructure as Code (IaC)** в том, чтобы **описать инфраструктуру кодом** и сделать её доступной для понимания. IaC работает со всеми компонентами инфраструктуры так, будто это просто данные. Такое стало возможно благодаря умению платформ виртуализации и облачных провайдеров разделять инфраструктуру и оборудование, а для управления серверами, хранилищами и сетевыми устройствами предоставлять специальное API. ## Структура проекта 1. [Docker](./docker/) - это программная платформа для быстрой сборки, отладки и развертывания приложений с помощью **контейнеров**. 2. [kubeadm](./kubeadm/) - это инструмент для простого и быстрого развёртывания кластера Kubernetes. 3. [OpenTofu](./opnetofu) — программное обеспечение с **открытым исходным кодом**, используемое для **управления внешними ресурсами** (например, в рамках модели **инфраструктура как код**). Проект Linux Foundation. Пользователи определяют и предоставляют инфраструктуру центра обработки данных с помощью **декларативного языка конфигурации**, известного как HashiCorp Configuration Language (HCL) или JSON. 4. [Ansible](./ansible) — система управления конфигурациями, написанная на языке программирования **Python**, с использованием **декларативного языка разметки** для **описания конфигураций**. Применяется для **автоматизации настройки и развёртывания программного обеспечения**. ## Pre-commit hook **Pre-commit hook** — это скрипт, который выполняется перед тем, как изменения будут зафиксированы в системе контроля версий, например, в Git. Он позволяет автоматически проверять код и выполнять определенные действия, такие как запуск тестов, проверка стиля кода, статический анализ и другие проверки, чтобы предотвратить попадание некорректного или несоответствующего стандартам кода в репозиторий. Преимущества использования **pre-commit hook**-ов: - **Автоматизация проверки кода**: Хуки позволяют автоматизировать проверку качества кода, что помогает поддерживать стандарты кода в команде. - **Раннее выявление ошибок**: Хуки помогают обнаруживать ошибки и недочеты до того, как они попадут в репозиторий, что снижает количество багов и повышает качество кода. - **Повышение производительности**: Автоматические проверки экономят время разработчиков, которое они могли бы потратить на ручные проверки. Использование pre-commit hook-ов является хорошей практикой, которая помогает поддерживать качество и стабильность кода в проекте. - Установка Прежде чем запускать **хуки**, необходимо установить менеджер пакетов **pre-commit**. С помощью **pip**: ```console pip install pre-commit==3.7.1 ``` В python-проекте добавьте в файл **requirements.txt** (или **requirements-dev.txt**) следующее: ```text pre-commit==3.7.1 ``` С помощью **homebrew**: ```console brew install pre-commit ``` С помощью **conda** (через **conda-forge**): ```console conda install -c conda-forge pre-commit ``` - Быстрый запуск Следуйте инструкциям по установке, приведенным выше. pre-commit --version должен показать, какую версию вы используете. ```console pre-commit --version pre-commit 3.7.1 ``` Устанавливаем **pre-commit** ```console pre-commit install ``` ### Обновление версии хуков Обновить все версии хуков до последней версии можно при помощи команды ```sh pre-commit autoupdate ```