Для проектов, которые включают в себя конфигурации Terraform, требуется доступ к среде выполнения Terraform, интегрируемой с локальной версией Cloud Assembly.

Добавление среды выполнения Terraform

Среда выполнения состоит из кластера Kubernetes, выполняющего команды Terraform CLI для осуществления запрошенных операций. Кроме того, среда выполнения собирает журналы и возвращает результаты команд Terraform CLI.

Для локальной версии vRealize Automation требуется, чтобы пользователи настроили собственный кластер Kubernetes в среде выполнения Terraform. Для каждой организации поддерживается только одна среда выполнения Terraform. Все развертывания Terraform для этой организации используют одну и ту же среду выполнения.

  1. Убедитесь, что у вас есть кластер Kubernetes, в котором можно запустить интерфейс командной строки Terraform.
    • Все пользователи могут предоставлять файл kubeconfig для запуска интерфейса командной строки Terraform в неуправляемом кластере Kubernetes.
    • Пользователи лицензии уровня Enterprise могут запускать интерфейс командной строки Terraform в кластере Kubernetes под управлением vRealize Automation.

      В Cloud Assembly перейдите в раздел Инфраструктура > Ресурсы > Kubernetes и подтвердите, что у вас есть кластер Kubernetes. Если у вас нет такого кластера, см. инструкции по его добавлению в Работа с Kubernetes в Cloud Assembly.

  2. Если кластер Kubernetes только что добавлен или изменен, дождитесь завершения сбора данных.

    Процесс сбора данных извлекает список пространств имен и другие сведения и может занимать до 5 минут в зависимости от поставщика.

  3. После завершения сбора данных выберите Инфраструктура > Подключения > Интеграции > Добавить интеграцию, а затем карточку Среда выполнения Terraform.
  4. Введите значения параметров.
    Рис. 1. Пример интеграции среды выполнения Terraform
    Пример интеграции среды выполнения Terraform для пользователей лицензий уровня Advanced
    Настройка Описание
    Имя Назначьте для интеграции среды выполнения уникальное имя.
    Описание Укажите, для чего предназначена интеграция.
    Интеграция среды выполнения Terraform:
    Тип среды выполнения (только для уровня Enterprise) Пользователи лицензии уровня Enterprise могут выбрать, запускать ли интерфейс командной строки Terraform в кластере Kubernetes под управлением vRealize Automation или в неуправляемом кластере.
    Kubernetes kubeconfig (все пользователи)

    Для неуправляемого кластера Kubernetes: вставьте все содержимое файла kubeconfig кластер, предназначенное для внешнего кластера.

    Сведения об использовании внешней среды выполнения Kubernetes с прокси-сервером см. в разделе Добавление поддержки прокси-сервера.

    Этот параметр доступен для всех пользователей.

    Кластер Kubernetes (только для уровня Enterprise)

    Для Kubernetes под управлением vRealize Automation выберите кластер, в котором будет запускаться интерфейс командной строки Terraform.

    Кластер и соответствующий файл kubeconfig должны быть доступны. Для проверки доступа к kubeconfig используйте метод GET в каталоге /cmx/api/resources/k8s/clusters/{clusterId}/kube-config.

    Этот параметр доступен только для лицензий уровня Enterprise.

    Пространство имен Kubernetes Выберите пространство имен, которое будет использоваться в кластере для создания модулей, которые запускают Terraform CLI.
    Параметры контейнера среды выполнения:
    Изображение Введите путь к образу контейнера версии Terraform, которую необходимо запустить.
    Примечание: Кнопка «Проверить» не позволяет проверить наличие образа контейнера.
    Требование к ЦП Укажите объем ЦП для выполнения контейнеров. Значение по умолчанию — 250 millicore.
    Ограничение ЦП Укажите максимально допустимый объем ЦП для выполнения контейнеров. Значение по умолчанию — 250 millicore.
    Требование к памяти Укажите объем памяти для выполнения контейнеров. Значение по умолчанию — 512 МБ.
    Ограничение памяти Укажите максимально допустимый объем памяти для выполнения контейнеров. Значение по умолчанию — 512 МБ.
  5. Щелкните ПРОВЕРИТЬ и при необходимости измените значения параметров.
  6. Нажмите кнопку ДОБАВИТЬ.

Настройки параметров кэшируются. После добавления интеграции можно изменить такие параметры, как кластер или пространство имен, но для обнаружения изменений и запуска Terraform CLI с новыми параметрами может потребоваться до 5 минут.

Устранение неполадок среды выполнения Terraform

Некоторые проблемы при развертывании конфигурации Terraform могут быть связаны с интеграцией среды выполнения.

Проблема Причина Разрешение
Не удается выполнить проверку, выводится сообщение о недопустимости пространства имен. Кластер был изменен, но оставлено предыдущее пространство имен в пользовательском интерфейсе. После изменения выбранного кластера всегда снова выбирайте пространство имен.
Раскрывающийся список пространств имен пуст или не содержит новые добавленные пространства имен. Сбор данных для кластера не завершен. Сбор данных занимает до 5 минут после ввода или изменения кластера и до 10 минут при вводе или изменении пространства имен. В случае нового кластера с существующими пространствами имен подождите 5 минут до завершения сбора данных.

В случае нового пространства имен в существующем кластере подождите 10 минут до завершения сбора данных.

Если проблема сохраняется, удалите кластер и снова добавьте его в разделе Инфраструктура > Ресурсы > Kubernetes.

Контейнеры Terraform CLI создаются в предыдущем кластере, предыдущем пространстве имен или с предыдущими настройками среды выполнения даже после обновления учетной записи интеграции. Клиент API-интерфейса Kubernetes, используемый системой vRealize Automation, кэшируется в течение 5 минут. Чтобы изменения вступили в силу, может потребоваться до 5 минут.
При выполнении операции проверки или развертывания Terraform произошла ошибка; сообщается, что Kubeconfig недоступен. Иногда эти ошибки возникают из-за того, что кластер недоступен из vRealize Automation.

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

Ошибка Kubeconfig может возникать по различным причинам. Для устранения неполадок может потребоваться обращение в службу технической поддержки.

Добавление поддержки прокси-сервера

Чтобы кластер внешней среды выполнения Kubernetes мог подключаться через прокси-сервер, выполните следующие действия.

  1. Войдите на сервер внешнего кластера Kubernetes.
  2. Создайте пустую папку.
  3. В новой папке добавьте в новый файл с именем Dockerfile следующие строки.
    FROM projects.registry.vmware.com/vra/terraform:latest as final
    ENV https_proxy=protocol://username:password@proxy_host:proxy_port
    ENV http_proxy=protocol://username:password@proxy_host:proxy_port
    ENV no_proxy=.local,.localdomain,localhost
  4. Измените значения заполнителя так, чтобы переменные среды https_proxy и http_proxy содержали параметры прокси-сервера, используемого для доступа к Интернету.

    Параметр protocol будет иметь значение http или https, в зависимости от того, какой протокол использует ваш прокси-сервер, и может отличаться от имени переменной среды https_proxy или http_proxy.

  5. Сохраните файл Dockerfile и закройте его.
  6. Из пустой папки выполните следующую команду. В зависимости от прав своей учетной записи, возможно, потребуется выполнить команду в режиме sudo.

    docker build --file Dockerfile --tag custom-terraform-runtime:1.0 .

    Эта команда создает локальный образ Docker custom-terraform-runtime:1.0.

  7. В Cloud Assembly в разделе Инфраструктура > Подключения > Интеграции перейдите к свой интеграции среды выполнения Terraform.
  8. Создайте или измените параметры контейнера в среде выполнения для использования образа custom-terraform-runtime:1.0:
    Образ прокси-сервера среды выполнения Terraform