[Terraform] Одна статья для понимания характеристик, жизненного цикла, базовой грамматики

CI/CD облачные вычисления
[Terraform] Одна статья для понимания характеристик, жизненного цикла, базовой грамматики

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Эта статья также участвует"Проект "Звезда раскопок"", чтобы выиграть творческие подарочные пакеты и бросить вызов творческим поощрениям.

В этой статье основное внимание уделяется функциям и жизненному циклу Terraform, а также базовому синтаксису.

1. Примечательные особенности

TerraformКак пионер инфраструктуры как кода, есть много передовых идей, ниже приведены некоторые из их основных характеристик.

  • на основеIaC(Инфраструктура как код) предназначен для описания инфраструктуры на предметно-ориентированном языке (HasiCorp HCL/DCL), устраняя двусмысленность в описании семантики при автоматизации инфраструктуры, сокращая при этом человеческие усилия Неточное влияние факторов.
  • TerraformПеред выполнением действия оркестровки будет создан удобочитаемый план выполнения, и изменения в критической инфраструктуре могут быть полностью проверены, что обеспечит надежность инфраструктуры.
  • На основе DAG (направленный ациклический граф) для описания взаимосвязи между ресурсами.

2. Жизненный цикл

img

Согласно схеме примера, часть слеваTerraformВозможности, предоставляемые самим собой, и возможности, предоставляемые поставщиками облачных услуг, справа. На графике есть три основных потока, в том числеОсновной процесс Terraform,Процесс поставщика,Процесс обеспечения. Возможности трех потоков следующие:

  • Основной процесс Terraform: отвечает за файлы определения ресурсов, построение ориентированных ациклических графов и управление хранилищем состояний;
  • Процесс поставщика: процесс, обеспечивающий возможности оркестровки ресурсов, включая возможности, реализованные поставщиками облачных услуг (например, UCloud), и возможности, предоставляемые приложениями (например, TLS);
  • • Процесс Provisioner: процесс, обеспечивающий операции постобработки для оркестровки ресурсов, такие как выполнение команд Shell, загрузка файлов и т. д.;

3. Основные правила грамматики

3.1 Тип

примитивный тип(Три типа могут быть неявно преобразованы)

  • string

    Он представляет собой набор строк Unicode, например: «привет».

  • number

    Он представляет собой число, которое может быть целым или десятичным

  • bool

    Логическое суждение, истинное или ложное

сложный тип

Тип коллекции

  • список (непрерывный сбор)
  • карта (тип словаря)
  • set (тип коллекции, представляющий набор уникальных значений)

структурированный тип

  • объект (имя+атрибут)

    • Формат: объект({возраст=число, имя=строка})
    • Пример: object({age=number,name=string}), assign { age=18, name="john" }
  • кортеж (аналог списка, но каждый элемент может иметь отдельный тип)

особый тип

  • любой (заполнитель, может использоваться для назначения любого типа)
  • null (нет типа, указывает на отсутствующие данные)

3.2 Синтаксис конфигурации

назначение параметров

Присвойте значение определенному имени, например: image_id="abc123"

кусок

Описание: Блок — это контейнер, который содержит набор другого контента, блоки могут быть вложены друг в друга.

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

img

Примечания

Описание: Комментарий не объясняет выполнение

  • Однострочный комментарий, содержимое после которого является комментарием, и по умолчанию оно используется первым!
  • // однострочный комментарий, следующее содержимое является комментарием
  • /* и */, многострочные комментарии, вы можете комментировать несколько строк

Формат кодирования

  • Файлы конфигурации всегда должны использовать кодировку UTF-8.
  • Разделитель должен использовать символы ASCII
  • Другие идентификаторы, комментарии и строковые литералы могут использовать символы, отличные от ASCII.

идентификатор

Описание: Имена параметров, имена типов блоков и имена других структур, определенных в спецификации Terraform.

  • Допустимые идентификаторы могут содержать буквы, цифры, символы подчеркивания (_) и знаки минус (-).
  • Первая буква идентификатора не может быть цифрой