Home > Mobile >  run GO111MODULE=on go install . ./cmd/... in cloud init
run GO111MODULE=on go install . ./cmd/... in cloud init

Time:11-23

I have a bash script which is deployed with cloud init, my bash script contains the following part of code

GO111MODULE=on go install . ./cmd/...

when running my bash script directly in the terminal of the deplyed server, it works as expected. But when i run it with runcmd in the cloud config, this part of the script:

GO111MODULE=on go install . ./cmd/...

does not get executed, anyone knows why?

    runcmd:
  - [ bash, /usr/local/bin/myscript.sh ]

CodePudding user response:

Thanks to the tip from VonC, i was able to fix the issue. i added the following to myscript.sh

GOCACHE=/root/.cache/go-build
export GOCACHE
export GO111MODULE=on
go install . ./cmd/...


runcmd:
- [ bash, -c, /usr/local/bin/myscript.sh ]

the script now deploys from cloud-init.

CodePudding user response:

A proper shell execution in runcmd would be (as seen in Cloud config examples):

- [ bash, -c, /usr/local/bin/myscript.sh ]

or:

- [ /usr/local/bin/myscript.sh ]

Assuming your script starts with a shebang #!/bin/bash

Plus, you need to add any environment variable inside the script, as Cloud config examples do not include any obvious way to set them.

#!/bin/bash
export GO111MODULE=on
export ...
  • Related