Провижионеры local и remote exec
Реализуйте провижионеры `local-exec` и `remote-exec`, чтобы выполнять команды соответственно на машине, где запущен Terraform, или на созданных ресурсах.
«Провижионеры local и remote exec» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Знакомство с провижионерами Terraform
Что делать, если после создания ресурса Terraform Вам нужно выполнить скрипт или команду? Для этого предназначены провижионеры!
Провижионеры позволяют выполнять действия на локальном компьютере или удалённом ресурсе в рамках его жизненного цикла. Они устраняют разрыв между созданием инфраструктуры и первоначальной настройкой программного обеспечения.
Представляйте их как хуки, позволяющие настроить ресурсы сразу после их создания.
`local-exec`: выполнение локально
Провижионер local-exec выполняет команды на компьютере, где запущен Terraform.
Это полезно для таких задач, как:
- Локальное создание файлов конфигурации.
- Запуск локальных скриптов или инструментов.
- Выполнение операций очистки после уничтожения ресурса.
Он идеально подходит для действий, которые не требуется выполнять на самом облачном ресурсе.
`local-exec`: базовый пример
Посмотрим, как local-exec создаёт простой файл на локальном компьютере после создания ресурса-заглушки.
null_resource — это заполнитель, который ничего не создаёт в облаке, но удобен для запуска провижионеров.
resource "null_resource" "local_file_creator" {
provisioner "local-exec" {
command = "echo 'Local file created by Terraform!' > local_output.txt"
}
triggers = {
always_run = timestamp()
}
}Когда использовать `local-exec`
local-exec отлично подходит для следующих задач:
- Уведомления после развёртывания: отправка электронного письма или сообщения в Slack.
- Локальное создание файлов: создание файлов инвентаризации для Ansible или других инструментов.
- Проверки перед развёртыванием: запуск локальных скриптов проверки.
- Запуск CI/CD: запуск конвейера после изменений инфраструктуры.
Помните: он выполняется из каталога, в котором Вы запускаете terraform apply.
`remote-exec`: выполнение на ресурсе
В отличие от local-exec, провижионер remote-exec выполняет команды непосредственно на удалённом ресурсе.
Это особенно важно для первоначальной настройки только что созданного сервера, например:
- Установки программных пакетов (например, веб-сервера или базы данных).
- Настройки параметров операционной системы.
- Развёртывания кода приложения.
Для этого требуется сетевое подключение к целевому ресурсу (например, SSH для Linux или WinRM для Windows).
Подключение для `remote-exec`
Чтобы remote-exec работал, Terraform должен подключиться к ресурсу.
Распространённые типы подключений:
- SSH: для экземпляров Linux; требуется закрытый ключ.
- WinRM: для экземпляров Windows; требуются учётные данные.
Обычно параметры подключения настраиваются внутри блока provisioner или наследуются от ресурса.
`remote-exec` для EC2
Ниже показано, как использовать remote-exec для установки Apache на новом экземпляре AWS EC2.
Примечание: для этого экземпляр EC2 должен быть подготовлен и доступен через SSH. Для простоты предполагается, что пара ключей и группа безопасности уже существуют.
resource "aws_instance" "web_server" {
ami = "ami-0abcdef1234567890" # Replace with valid AMI ID
instance_type = "t2.micro"
key_name = "my-ssh-key" # Replace with your SSH key name
vpc_security_group_ids = ["sg-0123456789abcdef0"] # Replace with your SG ID
provisioner "remote-exec" {
inline = [
"sudo yum update -y",
"sudo yum install -y httpd",
"sudo systemctl start httpd",
"sudo systemctl enable httpd"
]
connection {
type = "ssh"
user = "ec2-user"
private_key = file("~/.ssh/my-ssh-key.pem")
host = self.public_ip
}
}
}Когда использовать `remote-exec`
remote-exec идеально подходит для следующих задач:
- Начальной настройки серверов: установка веб-серверов, баз данных или Docker.
- Развёртывания приложений: копирование кода приложения и его настройка.
- Управления конфигурацией: непосредственный запуск сценариев Ansible или рецептов Chef.
- Проверки после создания: проверка работы служб на новом экземпляре.
Это основной инструмент для настройки исходного состояния сервера.
Провижионеры при уничтожении
Провижионеры также могут выполняться при уничтожении ресурса. Это полезно для задач очистки.
В блоке провижионера можно указать when = destroy. Например, чтобы удалить экземпляр из балансировщика нагрузки перед его завершением.
Поведение on_failure также можно настроить, определив, что должно происходить при сбое команды провижионера. По умолчанию выполнение завершается ошибкой.
Тест по провижионерам
Какой провижионер следует использовать, чтобы установить веб-сервер (например, Nginx) на только что созданный экземпляр виртуальной машины?
Провижионеры: локальные и удалённые
Вы изучили провижионеры Terraform — мощные инструменты для выполнения команд на протяжении жизненного цикла ресурса.
local-execвыполняет команды на компьютере, где запущен Terraform, и подходит для локальных сценариев или уведомлений.remote-execвыполняет команды непосредственно на подготовленном ресурсе и отлично подходит для первоначальной настройки серверов с программным обеспечением или конфигурациями.
Провижионеры помогают устранить разрыв между развёртыванием инфраструктуры и первоначальной настройкой приложения. Далее Вы изучите продвинутые методы управления состоянием!
Часто задаваемые вопросы
Урок «Провижионеры local и remote exec» бесплатный?
Да — полный текст урока «Провижионеры local и remote exec» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Провижионеры local и remote exec»?
Реализуйте провижионеры `local-exec` и `remote-exec`, чтобы выполнять команды соответственно на машине, где запущен Terraform, или на созданных ресурсах. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Провижионеры local и remote exec»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Запрос данных с помощью источников данных
- Провижионеры local и remote exec
- Ресурсы Null и триггеры
- Использование внешних данных и шаблонов