Провижионеры local и remote exec
Реализуйте провижионеры `local-exec` и `remote-exec`, чтобы выполнять команды соответственно на машине, где запущен Terraform, или на созданных ресурсах.
«Провижионеры local и remote exec» — бесплатный урок Terraform Infrastructure as Code на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Terraform Infrastructure as Code, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Terraform Infrastructure as Code содержит 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) и разблокировать остальной курс Terraform Infrastructure as Code, подпишись на CoddyKit PRO. Курс Terraform Infrastructure as Code содержит 4 уроков всего.
Чему я научусь в уроке «Провижионеры local и remote exec»?
Реализуйте провижионеры `local-exec` и `remote-exec`, чтобы выполнять команды соответственно на машине, где запущен Terraform, или на созданных ресурсах. Ты практикуешь Terraform Infrastructure as Code с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Terraform Infrastructure as Code?
Предыдущий опыт не требуется. Terraform Infrastructure as Code на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Провижионеры local и remote exec»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Terraform Infrastructure as Code?
Да. Каждый урок Terraform Infrastructure as Code включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Запрос данных с помощью источников данных
- Провижионеры local и remote exec
- Ресурсы Null и триггеры
- Использование внешних данных и шаблонов