Не удалось создать экземпляр поставщика - Пользовательский поставщик для Terraform Cloud - [fork/exec - ошибка формата exec]
Я пытаюсь создать настраиваемого поставщика AWS для Terraform.
Поставщик находится в этом репозитории: https://github.com/lyle-nel/terraform-provider-aws, и я выполнил все инструкции в readme, чтобы создать двоичный файл поставщика.
Я выполнил инструкции по созданию и настройке собственного поставщика для облака 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
не загружает полный файл, потому что размер файла слишком мал по сравнению с загрузкой вручную.
Также есть @
суффикс разрешений файла при загрузке файла вручную.
Не знаю почему. но теперь это работает