New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create an ARM based build for the pulumi cli (and plugins) #4868
Comments
Just a note - we will want ARM builds across all supported OS’s. Linux builds will also be valuable to support using Pulumi on cloud-based ARM servers such as AWS Graviton. |
Also - this will require not just CLI, but also all plugins (both resource provider plugins but also language host plugins). |
related: #5244 |
Per #5466 - this should also include ARM Docker images. |
ARM-based MacBook Pro 13", MacBook Air, and Mac mini available starting 11/17: https://www.apple.com/apple-events/november-2020/ |
I had a try at building the ARM binaries yesterday, the PR is here: The binary worked without issue. I also built an AWS provider ARM binary which worked without any issues either. I tried out a simple Pulumi program on an AWS graviton machine. It worked successfully with the Go SDK What I ran into was:
|
Great!
What exactly was the error? Was this due to pulumi/sdk/go/common/workspace/plugins.go Line 190 in 186e2f0
What exactly was the error? |
There is a Go prerelease supporting the M1 but it is not installable via Homebrew I'm working on an M1 with the typescript SDK's (and the x86 version of pulumi via rosetta) which works fine, so if I can help test an ARM version, let me know |
Hi everyone, I ran into the problem described above by @jaxxstorm
is there any approach to work around this? (M1 Mac) |
Unfortunately, this is blocked until Go 1.16 has been released goreleaser/goreleaser#1952 |
I install 2 versions of homebrew, the ARM one (which uses /opt/homebrew) and the x86 one which uses /usr/local. See point 4 in https://medium.com/better-programming/5-things-i-have-learned-when-using-the-m1-chip-macbook-air-a77f93c50381 I do not use 2 terminals but I aliased this Install pulumi from ibrew and you get the x86 version that works perfectly over Rosetta |
I managed to get the aws plugins working by compiling myself with the help of @stack72. For anybody like me that can't wait the steps I followed were:
Seems to work fine for me although my stacks aren't very complex. |
Quick update on this work:
|
Related: #4868 Also adds the arm64 build and deployment steps via goreleaser
Related: #4868 Also adds the arm64 build and deployment steps via goreleaser
Ok further update:
Still remaining: add the work for arm64 downloads to get.pulumi.com |
FYI: kubectl is not arm ready until this makes it into a release kubernetes/kubernetes#97743 (so at least the kubernetes and eks providers will be impacted) |
Oh, and google-cloud-sdk also does not install under arm. The current list I need to install under amd64 is
and in case if anyone wonders how I do this
then |
Related: #4868 Also adds the arm64 build and deployment steps via goreleaser
Hi all Pleased to say that this work will be available Wednesday 17th March as part of Pulumi v2.23.0 Paul |
Friends, I am happy to say that the latest CLI (v2.23.0) and the latest provider binaries are available with arm64 packages on macOS Please let us know if there are any issues Paul |
@stack72 I've successfully upgraded the CLI to 2.23.0 on a macbook m1 but I'm unable to use it because the AWS provider won't install
|
Hey @barakcoh So only the latest versions of the plug-in are built with arm so you'd have to upgrade you code to use Pulumi-aws v3.33.0 before there is an arm binary to use Sorry for me not being clear on that point Paul |
Hi @stack72, I have the same issue as @barakcoh, after updating to the following
I get the following error
Then if I try to install that error: [resource plugin aws-2.13.1] downloading from : 403 HTTP error fetching plugin from https://get.pulumi.com/releases/plugins/pulumi-resource-aws-v2.13.1-darwin-arm64.tar.gz cli version: v2.23.1 |
I have been running it since launch on M1 without any issues. Some things I would check (with examples from my setup) package.json:
So you are getting an old version installed, while you define a new version. I would first recommend not using the ^ in your dependencies as you have more control over what version you actually get. But that is beside the point now. Then if you use Yarn run
I think you will either find here, 2 versions, or just the old version. It will tell you the reason it selected a version. If you use npm i do not know an equivalent command, but you can open the package-lock.json and find all references to pulumu/aws
Look for instances where something depends on pulumi/aws and check the version there. In essence that is the same info that yarn why returns. The lock files define the versions installed. When you found one, you can probably find a node_modules folder in that package folder in the main node_modules. You then have to figure out why it depends on that old version. It might be because that one does not have a caret in its version and forces an older version. Now in the pulumi stack (get the json by using
In your case Then again, if it cannot find the 3.33.0 version now, forcing it to use it will not really help ofcourse. Another thing you could investigate is your path.
While typing this, just thought of a different thing, this is the flow to upgrade
From your error messages i think you might have forgotten to do 2. |
Yeah everything seems to be fine from a dependecy standpoint. We use pnpm but there is a version of But yeah the pulumi export file still references the older versions. I updated them in our staging env and it seems to the newer installed version and that seems to have unblocked things. Seems a bit risky, but I'll live with that. Thanks for your help. |
It would be uber awesome if docker images also offer amr64 variants |
The prerequisite work is to get our projects to go1.16 so that macOS arm builds are supported
The work required here is as follows:
The text was updated successfully, but these errors were encountered: