Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Эта статья также участвует"Проект "Звезда раскопок"", чтобы выиграть творческие подарочные пакеты и бросить вызов творческим поощрениям.
В этой статье основное внимание уделяется функциям и жизненному циклу Terraform, а также базовому синтаксису.
1. Примечательные особенности
Terraform
Как пионер инфраструктуры как кода, есть много передовых идей, ниже приведены некоторые из их основных характеристик.
- на основе
IaC
(Инфраструктура как код) предназначен для описания инфраструктуры на предметно-ориентированном языке (HasiCorp HCL/DCL), устраняя двусмысленность в описании семантики при автоматизации инфраструктуры, сокращая при этом человеческие усилия Неточное влияние факторов. -
Terraform
Перед выполнением действия оркестровки будет создан удобочитаемый план выполнения, и изменения в критической инфраструктуре могут быть полностью проверены, что обеспечит надежность инфраструктуры. - На основе DAG (направленный ациклический граф) для описания взаимосвязи между ресурсами.
2. Жизненный цикл
Согласно схеме примера, часть слева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"
кусок
Описание: Блок — это контейнер, который содержит набор другого контента, блоки могут быть вложены друг в друга.
- Тип блока может содержать любое количество тегов или не содержать тегов.
- Встроенные блоки верхнего уровня, которые могут быть независимо определены в файлах конфигурации, такие как ресурс, переменная, вывод, данные
Примечания
Описание: Комментарий не объясняет выполнение
- Однострочный комментарий, содержимое после которого является комментарием, и по умолчанию оно используется первым!
- // однострочный комментарий, следующее содержимое является комментарием
- /* и */, многострочные комментарии, вы можете комментировать несколько строк
Формат кодирования
- Файлы конфигурации всегда должны использовать кодировку UTF-8.
- Разделитель должен использовать символы ASCII
- Другие идентификаторы, комментарии и строковые литералы могут использовать символы, отличные от ASCII.
идентификатор
Описание: Имена параметров, имена типов блоков и имена других структур, определенных в спецификации Terraform.
- Допустимые идентификаторы могут содержать буквы, цифры, символы подчеркивания (_) и знаки минус (-).
- Первая буква идентификатора не может быть цифрой