Не удалось создать экземпляр поставщика - Пользовательский поставщик для Terraform Cloud - [fork/exec - ошибка формата exec]

Я пытаюсь создать настраиваемого поставщика AWS для Terraform.

  1. Поставщик находится в этом репозитории: https://github.com/lyle-nel/terraform-provider-aws, и я выполнил все инструкции в readme, чтобы создать двоичный файл поставщика.

  2. Я выполнил инструкции по созданию и настройке собственного поставщика для облака Terraform, которые можно найти здесь: https://www.terraform.io/docs/cloud/run/install-software.html

По сути, я помещаю свой двоичный файл в следующую структуру каталогов, чтобы Terraform Cloud могла его забрать: terraform.d / plugins / linux_amd64/.

Но когда я запускаю свое репо с моим скомпилированным двоичным файлом, я получаю эту ошибку в облаке Terraform:

Ошибка: не удалось создать экземпляр поставщика aws для получения схемы: fork/exec /terraform/aws_tf/terraform.d/plugins/linux_amd64/terraform-provider-aws: ошибка формата exec

Я немного погуглил и обнаружил, что мне нужно статически скомпилировать двоичный файл и указать архитектуру, и я сделал это с помощью этой команды:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -a -ldflags '-w -extldflags "-static"'

И если я запускаю файл, чтобы получить подробную информацию о двоичном файле, он показывает его как статически связанныйfile terraform-provider-aws: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

но в Terraform Cloud он по-прежнему возвращается с той же ошибкой.

Сначала я построил двоичный файл на Linux Mint 19.3, которую я использую, и когда это не сработало, я создал виртуальную машину Ubuntu 18.04 и попробовал ее там [потому что в документах говорится, что Terraform Cloud работает на Ubuntu, поэтому я подумал, что это будет имеет значение], но все равно не повезло.

Если есть кто-то, кто делал это раньше, или кто знает, где я ошибаюсь, пожалуйста, помогите мне. Я схожу с ума здесь.

1 ответ

В этой проблеме есть что-то странное.

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

  • когда я загружаю стороннего провайдера с помощью curl, он не работает.

  • когда я загружаю его вручную из браузера, он работает.

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

  • когда я загружаю его с помощью curl, загруженный файл имеет следующие разрешения / данные:
-rwxr-xr-x  1 abdennour  staff  653 Jul 18 12:06 terraform-provider-helmfile
  • при загрузке вручную из браузера я получил:
-rwxr-xr-x@ 1 abdennour  staff  29358832 Jul 18 12:22 terraform-provider-helmfile

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

Также есть @ суффикс разрешений файла при загрузке файла вручную.

Не знаю почему. но теперь это работает

Другие вопросы по тегам