Пользователи службы vRealize Automation Cloud Assembly, которым необходимо проектировать и запускать интеграции Terraform без подключения к Интернету, могут настроить среду выполнения, используя данный пример.

Примечание: Во время настройки необходимо временно подключиться к Интернету.

Этот процесс предполагает, что у вас есть собственный реестр Docker и вы можете получить доступ к его репозиториям без подключения к Интернету.

Создание настраиваемого образа контейнера

  1. Создайте образ настраиваемого контейнера, который содержит двоичные файлы подключаемого модуля поставщика Terraform.

    В следующем файле Dockerfile показан пример создания настраиваемого образа с поставщиком Terraform GCP.

    Для загрузки базового образа projects.registry.vmware.com/vra/terraform:latest в файле Dockerfile требуется временный доступ через Интернет к реестру VMware Harbor на сайте projects.registry.vmware.com.

    Кроме того, может потребоваться временный доступ к сайту releases.hashicorp.com для загрузки двоичных файлов подключаемого модуля поставщика Terraform. Тем не менее в качестве альтернативы можно использовать частный реестр для предоставления двоичных файлов подключаемого модуля.

    FROM projects.registry.vmware.com/vra/terraform:latest as final
     
    # Create provider plug-in directory
    ARG plugins=/tmp/terraform.d/plugin-cache/linux_amd64
    RUN mkdir -m 777 -p $plugins
      
    # Download and unzip all required provider plug-ins from hashicorp to provider directory
    RUN cd $plugins \
        && wget -q https://releases.hashicorp.com/terraform-provider-google/3.58.0/terraform-provider-google_3.58.0_linux_amd64.zip \
        && unzip *.zip \
        && rm *.zip
      
    # For "terraform init" configure terraform CLI to use provider plug-in directory and not download from internet
    ENV Terraform_CLI_ARGS_init="-plugin-dir=$plugins -get-plugins=false"
  2. Выполните сборку, проставьте теги и поместите настраиваемый образ контейнера в свой репозиторий Docker.
  3. В vRealize Automation Cloud Assembly в разделе Инфраструктура > Подключения > Интеграции перейдите к свой интеграции среды выполнения Terraform.
  4. Создайте или отредактируете параметры контейнера в среде выполнения, чтобы добавить репозиторий для настраиваемого образа контейнера. Созданный настраиваемый образ контейнера в примере имеет имя registry.ourcompany.com/project1/image1:latest.
    Образ контейнера Terraform

Локальное размещение интерфейса командной строки Terraform

  1. Загрузите двоичные файлы интерфейса командной строки Terraform.
  2. Отправьте двоичные файлы интерфейса командной строки Terraform на свой локальный веб-сервер.
  3. В службе vRealize Automation Cloud Assembly выберите Инфраструктура > Настроить > Версии Terraform.
  4. Создайте или отредактируйте версию Terraform, чтобы она содержала URL-адрес двоичных файлов интерфейса командной строки, размещенных на вашем локальном веб-сервере.
    URL-адрес интерфейса командной строки Terraform

Проектирование и развертывание конфигураций Terraform

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

Сведения о начале работы см. в Подготовка vRealize Automation Cloud Assembly для конфигураций Terraform.

Устранение неполадок

В ходе развертывания откройте развертывание в vRealize Automation Cloud Assembly. На вкладке "Журнал" найдите события Terraform и нажмите Показать журналы справа. Если локальный поставщик Terraform работает, в журнале появляются следующие сообщения.

Initializing provider plugins

Terraform has been successfully initialized

Чтобы получить более надежный журнал, можно вручную отредактировать код облачного шаблона и добавить Terraform_LOG: DEBUG, как показано в примере ниже.

resources:
  terraform:
    type: Cloud.Terraform.Configuration
    properties:
      providers:
        - name: google
          # List of available cloud zones: gcp/us-west1
          cloudZone: gcp/us-west1
      environment:
        # Configure terraform CLI debug log settings
        Terraform_LOG: DEBUG
      terraformVersion: 0.12.29
      configurationSource:
        repositoryId: fc569ef7-f013-4489-9673-6909a2791071
        commitId: 3e00279a843a6711f7857929144164ef399c7421
        sourceDirectory: gcp-simple