Как создать провайдера терраформирования для всех платформ?

# #go #terraform #provider

Вопрос:

Как мне создать поставщика терраформирования, например https://github.com/hashicorp/terraform-provider-aws для всех платформ?

Когда я это делаю make build , я получаю только один двоичный файл на Mac.

Я хотел бы создать для всех платформ, которые обычно поддерживает Terraform.

Ответ №1:

вы можете передавать переменные среды GOOS и GOARCH для нужной ОС и архитектуры.

например: GOOS=linux GOARCH=ppc64 go build сборки для архитектуры Linux ppc64.

Ответ №2:

Вы можете скомпилировать для конкретной отдельной другой платформы, установив переменные среды GOOS и GOARCH то, что понимает набор инструментов Go. Например, вы можете выполнить сборку для Windows на x86_64, запустив ее внутри основного пакета поставщика:

 GOOS=windows GOARCH=amd64 go install
 

Процесс сборки для всех архитектур, поддерживаемых командой поставщиков, к сожалению, является процессом сборки, поддерживаемым каждой командой поставщиков, и, следовательно, может варьироваться между поставщиками. Тем не менее, общая схема-и та, которая верна для поставщика AWS-заключается в использовании GoReleaser для создания, маркировки и публикации релизов на нескольких платформах.

На момент написания статьи поставщик AWS .goreleaser.yml указывает матрицу поддерживаемых комбинаций ОС и архитектуры. Поэтому, если вы установите GoReleaser, вы можете создавать дистрибутивы для одного и того же набора целевых объектов с помощью goreleaser build .

То же самое должно быть верно и для других поставщиков, где команда использует GoReleaser для управления своими выпусками. Некоторые поставщики могут использовать другие шаблоны, но на момент написания статьи метод GoReleaser рекомендуется в документах Terraform, поэтому это довольно распространенный выбор.