также доступно по адресу
[EN] https://www.bluebirz.net/en/lets-try-terraform-part-1/
[TH] https://www .bluebirz.net/th/lets-try-terraform-part-1-th/

Terraform — один из известных инструментов IaaC (инфраструктура как код). Мы можем использовать его для предоставления, установки, реорганизации, вплоть до вывода из эксплуатации любых ресурсов на их поддерживаемой платформе. Конечно, включая GCP.

Почему Терраформ?

Облачные провайдеры, например GCP, имеют множество удобных для своих пользователей способов управления ресурсами. Например, веб-интерфейс, gcloud, REST API и т. д. Еще одним из них является Terraform, который очень популярен в кругах DevOps для выполнения этой работы.

Судя по его названию, «как код», он действительно позволяет управлять как исходным кодом. Возможно управление версиями, CI/CD, включая процесс пакетной обработки. До свидания, каждый раз нажимая и копируя-вставляя, чтобы создать виртуальную машину или что-то еще, что опасно человеческими ошибками.

Terraform разработан HashiCorp. И это с открытым исходным кодом. Мы можем посетить эту ссылку в качестве домашней страницы.



Концепции

Terraform работает с tf скриптами. Есть некоторые факты, которые мы должны помнить как фундаментальные.

  1. Обычно в руководстве говорится о создании main.tf, но требований к имени файла нет. Требуется как минимум 1 файл tf.
  2. Там будет файл с именами terraform.tfstate и terraform.tfstate.backup. Это файлы состояния. Ничего с ними не делайте, иначе мы потеряем всю историю и следы. В таком случае нам нужно импортировать изменения из реальных ресурсов.
  3. В одной папке будет только один набор файлов состояния. Это означает, что будут выполнены ВСЕ tf скриптов, и мы не можем выбрать, какой из них не выполнять.

Монтаж

Перейдите по этой ссылке и найдите метод, который подходит именно вам. Я сам предпочитаю brew.



Основные шаги

1. Инициализировать

Прежде всего, нам нужен первый скрипт tf с таким ключевым словом provider.

На этот раз мы назовем его main.tf, но учтите, что мы можем назвать его и другим. А провайдеры, поддерживаемые Terraform, перечислены в этой ссылке. На этот раз мы хотим развернуть на GCP, поэтому выбираем google.

Убедитесь, что мы находимся в папке, затем запустите.

terraform init

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

После завершения мы увидим новую папку .terraform и новый файл .terraform.lock.hcl. Они автоматически генерируются командой, и нам не нужно вносить в них изменения.

2. Добавьте ресурсы

Инициализировано, и теперь мы можем управлять нашими ресурсами, редактируя файл main.tf. Ключевое слово resource.

Синтаксис будет таким:

resource "<resource_type>" "<resource_name>" {
  attribute1 = value1
  attribute2 = value2 
}

Тип ресурса должен соответствовать реестру Terraform. Допустим, мы разрабатываем на GCP, мы можем проверить по этой ссылке.

Имя ресурса является внутренним. Мы можем назвать это как угодно. Однако мы должны применять соглашения об именах, такие как наличие типов, проектов или кратких целей.

Атрибуты зависят от типа ресурса. Подробности смотрите в реестре. А также их значения.

3. подтвердить

Лучшей практикой является проверка перед переходом к следующему шагу. Используйте эту команду.

terraform validate

Это очень помогает защититься от любых инцидентов. Если бы что-то было не так, оно бы заметило.

Ага, я забыл location, это обязательный атрибут. Так что я могу исправить это прямо сейчас.

И еще раз подтвердите.

Хорошо, идем дальше.

4. План

Завершена проверка, после чего мы должны запланировать проверку изменений.

terraform plan

Terraform отобразит все изменения, сравнивая текущее состояние и наши tf скрипты. Мы можем перепроверить, что здесь будет изменено. Также мы можем сохранить план для дальнейшего использования.

5. Применить

Скрипты действительны и изменения удовлетворены. Мы можем твердо выполнить это, чтобы применить изменения.

terraform apply
terraform apply -auto-approve

С флагом -auto-approve мы можем принудительно применить изменения без необходимости набирать «да» для подтверждения. Однако мы можем пропустить флаг, чтобы просмотреть его еще раз.

Теперь ведро создано как эта фигура.

6. Состояние

Все существующие ресурсы можно просмотреть с помощью команды.

terraform state list

Там будут все ресурсы, которые мы применяли до сих пор.

7. Уничтожить

Наконец, если мы хотим очистить все, что мы сделали. Да ВСЕ. Мы должны запустить эту команду.

terraform destroy
terraform destroy -auto-approve

ВСЕ существующие ресурсы будут удалены. Некоторые ресурсы защищены от удаления, и нам нужно проверить реестр, чтобы добавить некоторые атрибуты для этого случая, если это необходимо.

Да, это всего лишь основа для Terraform. Я обновлю следующие статьи об этом.

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

До встречи.