# #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, поэтому это довольно распространенный выбор.