- Installs the Google Go programming language
- Install configurations are entirely automatic
- Install configurations can be manually set
- Installs from configurable mirror
- Optionally cleans your
$GOPATHwhenever you need to. - Installs optional packages using
go getand/orgo install.
None.
Installation configuration
go_custom_mirror: https://storage.googleapis.com/golangBasic configuration
go_version: 1.10beta2
GOPATH: /home/vagrant/go
GOROOT: /usr/local/go
GOPROXY: https://proxy.golang.orgOptional configuration
GO111MODULE: "on" # Needs to be of type string, not on/off which will be handled as a boolean.
GOOS: darwin
GOARCH: amd64
go_checksum: sha256:82628a1a42d7ad88b100d0c4c9c0282a7e008e4eb73876bed4bd61ac4ee11b46Building from source
Golang Bootstrap Workspace
GOROOT_BOOTSTRAP: /home/vagrant/go1.4Boolean to indicate build should be from source.
build_go_from_source: falseBoolean to indicate Bootstrap needs installation.
install_go_bootstrap: falseWhich script should be used when building from source
go_build_script: make.bashTo install go get binaries/projects, add them to go_get with any modules configuration as desired. By not specifying a value for modules, the installation will assume the value of GO111MODULE.
Default configuration without modules configuration:
go_get:
- name: golint
url: github.com/golang/lint/golintConfiguration with modules disabled:
go_get:
- name: dvm
url: github.com/fubarhouse/dvm
modules: falseConfiguration with modules enabled:
go_get:
- name: gopm
url: github.com/gpmgo/gopm
modules: trueYou can also manually clone and get specific versions of packages, which does not include the download of any dependencies.
This was due to the need to install specific versions of software written in Go, and the language provides no alternative at this time.
It's highly recommend you run this playbook as many times as you need until you can get a success and to use go_reget in conjunction with this feature, or to not use this feature unless absolutely necessary.
go_install:
# repo is the git clone url, ssh or https.
- repo: https://github.com/fubarhouse/dvm.git
# dest is the namespace
dest: github.com/fubarhouse/dvm
# version refers to a tag, or branch.
version: 2.2.5
package: github.com/fubarhouse/dvmTo ensure all packages are removed before running the play, you can use the go_reget variable:
go_reget: trueTo add/change the absolute path of shell profiles to configure, use golang_shell_profile.
If you do not define golang_shell_profile, the functionality will be ignored.
golang_shell_profile: /root/.bash_profileTo clean up an installation completely prior to role execution:
go_install_clean: trueTo prevent clean up from removing GOPATH
go_install_clean_full: falseNote: If you specify insufficient permissions the playbook will treat the following play as a new installation because it will not be able to determine what version is installed. To specify the permissions of the codebase, you can set:
mode_codebase: 0755To specify the permissions of the workspace, you can set:
mode_workspace: 0755None.
- hosts: localhost
roles:
- fubarhouse.golang
- Install using
ansible-galaxy install fubarhouse.golang - Add this role to your playbook.
- Modify above variables as desired.
MIT / BSD
This role was created in 2016 by Karl Hepworth.
Image of Go's mascot was created by Takuya Ueda. Licenced under the Creative Commons 3.0 Attributions license. This image has been resized for purpose, but is otherwise unchanged.
