0Pricing
DevOps Bootcamp · Урок

Автоматизация обновлений инфраструктуры

Реализуйте рабочие процессы для безопасного планирования, применения и отмены изменений инфраструктуры с этапами проверки и утверждения.

«Автоматизация обновлений инфраструктуры» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Зачем автоматизировать обновления IaC?

Ручное управление инфраструктурой может быть медленным и приводить к ошибкам. Инфраструктура как код (IaC) помогает решить эту проблему, описывая инфраструктуру в коде.

Автоматизация обновлений IaC с помощью таких инструментов, как GitHub Actions, обеспечивает единообразие и скорость, а также уменьшает количество ошибок, вызванных человеческим фактором. Благодаря этому инфраструктура всегда соответствует своему описанию.

Жизненный цикл рабочего процесса IaC

Автоматизация IaC проходит по понятному жизненному циклу: планирование, применение и иногда уничтожение. Каждый этап можно интегрировать в конвейер непрерывной интеграции и доставки.

  • Планирование: просмотр предполагаемых изменений без их внесения.
  • Применение: внесение запланированных изменений в инфраструктуру.
  • Уничтожение: удаление ресурсов инфраструктуры (используйте с особой осторожностью!).

GitHub Actions помогает безопасно управлять этими этапами.

Планирование изменений с помощью Terraform

Прежде чем вносить изменения, важно понимать, что произойдет. Команда Terraform plan позволяет предварительно просмотреть изменения инфраструктуры.

Она сравнивает желаемое состояние (описанное в коде) с текущим состоянием инфраструктуры и показывает, какие ресурсы будут добавлены, изменены или уничтожены.

Попробуйте выполнить эти команды в простом проекте Terraform:

echo "Initializing Terraform..."
terraform init

echo "Running terraform plan..."
terraform plan

Рабочий процесс для `terraform plan`

Создадим рабочий процесс GitHub Actions, который автоматически запускает terraform plan при каждой отправке кода в основную ветку. Это позволяет сразу увидеть результат предполагаемых изменений.

Затем результат планирования можно просмотреть непосредственно в запросе на включение изменений или в журналах рабочего процесса.

name: 'Terraform Plan'

on:
  pull_request:
    branches:
      - main

jobs:
  terraform:
    name: 'Terraform Plan'
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3

    - name: Terraform Init
      id: init
      run: terraform init

    - name: Terraform Plan
      id: plan
      run: terraform plan -no-color

Ручное утверждение с помощью окружений

Автоматическое применение изменений инфраструктуры может быть рискованным. Окружения GitHub позволяют добавить этапы ручного утверждения в рабочие процессы.

Вы можете определить окружения (например, «staging» и «production») и задать такие правила, как обязательное участие определенных проверяющих или ожидание заданного периода перед запуском задания развертывания.

Это добавляет важный этап проверки человеком перед выполнением чувствительных операций.

Рабочий процесс применения изменений

Чтобы безопасно применить изменения, настроим рабочий процесс для защищенного окружения GitHub. Задание приостановится и будет ожидать утверждения от назначенных участников команды.

Только после утверждения будет выполнена команда terraform apply, обновляющая инфраструктуру.

name: 'Terraform Apply'

on:
  workflow_dispatch:
    inputs:
      environment:
        description: 'Environment to deploy to'
        required: true
        default: 'staging'

jobs:
  terraform:
    name: 'Terraform Apply'
    runs-on: ubuntu-latest
    environment: ${{ github.event.inputs.environment }} # Target environment for approval

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3

    - name: Terraform Init
      id: init
      run: terraform init

    - name: Terraform Apply
      id: apply
      run: terraform apply -auto-approve

Безопасное уничтожение инфраструктуры

Команда terraform destroy безвозвратно удаляет все ресурсы, определенные в конфигурации Terraform. Это очень мощная и потенциально опасная операция.

Ее следует использовать только в особых контролируемых сценариях, например для удаления временного тестового окружения. Всегда перепроверяйте все перед продолжением!

Никогда не автоматизируйте `destroy` без надежных ручных ограничений и нескольких подтверждений.

echo "Preparing to destroy infrastructure..."
terraform init
terraform plan -destroy
read -p "Are you absolutely sure you want to destroy ALL resources? (yes/no): " CONFIRM
if [ "$CONFIRM" = "yes" ]; then
  echo "Destroying infrastructure..."
  terraform destroy -auto-approve
else
  echo "Destroy operation cancelled."
fi

Контролируемое уничтожение инфраструктуры

Даже для `destroy` можно использовать окружения GitHub как дополнительный уровень защиты. Это гарантирует, что никто не сможет случайно или злонамеренно уничтожить ресурсы рабочей среды без надлежащего разрешения.

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

name: 'Terraform Destroy'

on:
  workflow_dispatch:
    inputs:
      environment:
        description: 'Environment to destroy'
        required: true
        default: 'staging'

jobs:
  terraform:
    name: 'Terraform Destroy'
    runs-on: ubuntu-latest
    environment: ${{ github.event.inputs.environment }} # Target environment for approval

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3

    - name: Terraform Init
      id: init
      run: terraform init

    - name: Terraform Destroy
      id: destroy
      run: terraform destroy -auto-approve

Рекомендации по автоматизации IaC

Чтобы поддерживать надежный и безопасный конвейер IaC:

  • Проверка кода: всегда требуйте проверки кода для изменений IaC.
  • Минимальные привилегии: предоставляйте токенам рабочих процессов и служебным учетным записям только необходимые разрешения.
  • Блокировка состояния: убедитесь, что Ваш инструмент IaC (например, Terraform) использует блокировку состояния для предотвращения одновременных изменений.
  • Небольшие последовательные изменения: избегайте крупных монолитных обновлений инфраструктуры.
  • Отдельные окружения: используйте отдельные окружения (dev, staging, prod) с разными правилами утверждения.

Проверка рабочего процесса IaC

Вы узнали об автоматизации обновлений IaC с помощью планирования, применения и уничтожения ресурсов. Теперь проверим, насколько хорошо Вы поняли принципы защиты этих процессов.

Итоги: автоматизированные обновления IaC

В этом уроке Вы узнали, как автоматизировать рабочие процессы Infrastructure as Code с помощью GitHub Actions. Мы рассмотрели следующее:

  • Запуск terraform plan для безопасительного предварительного просмотра изменений.
  • Использование окружений GitHub для ручного утверждения перед применением или уничтожением инфраструктуры.
  • Реализацию рабочих процессов для контролируемого выполнения операций terraform apply и terraform destroy.
  • Основные рекомендации по безопасной и надежной автоматизации IaC.

Автоматизация IaC помогает эффективно и уверенно управлять облачными ресурсами!

Часто задаваемые вопросы

Урок «Автоматизация обновлений инфраструктуры» бесплатный?

Да — полный текст урока «Автоматизация обновлений инфраструктуры» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Автоматизация обновлений инфраструктуры»?

Реализуйте рабочие процессы для безопасного планирования, применения и отмены изменений инфраструктуры с этапами проверки и утверждения. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Автоматизация обновлений инфраструктуры»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. IaC с Terraform и GitHub Actions
  2. Управление облачными ресурсами
  3. Автоматизация обновлений инфраструктуры
  4. Управление состоянием Terraform и удалёнными серверными модулями
← Назад к DevOps Bootcamp