created: 2023-05-20T02:50:52.739Z
[2023年版][ansible x Raspbian] golang のインストール
3年前とおなじことを今やる方法について。
golang は apt でインストールされるのだが、これで入る go はバージョンが古くて mackerel-plugins
の中のものをビルドできなかったりする。
以前は apt で入れた古い go を使ってソースから新しい go を入れるということをやっていたが、いつのまにやら armv6l
のビルド済みバイナリが配布されていたのでラズパイ上でビルドする必要がなくなっていた。wget して gunzip するだけでよい。
- name: Check go version
shell: GOROOT=/opt/go /opt/go/bin/go version
register: checked_go_version
ignore_errors: true
- name: install go
when: checked_go_version.rc != 0 or (go_version) not in checked_go_version.stdout
block:
- name: wget golang tar.gz
ansible.builtin.shell: wget https://golang.org/dl/go{{ go_version }}.linux-armv6l.tar.gz
- name: gunzip golang tar.gz
ansible.builtin.shell: tar -C /opt -xzf go{{ go_version }}.linux-armv6l.tar.gz
参考
公式で案内されている方法。
その他
インストールしたバイナリを使って go install
を実行する場合の ansible のタスク定義はこんな感じ。
GOROOT
を定義してgo install
を実行するGOBIN=/usr/local/bin
として、PATHが通ったところにプラグインをインストールする
- name: go install mackerel plugins
ansible.builtin.shell: "/opt/go/bin/go install github.com/{{ item }}@latest"
environment:
GOROOT: /opt/go
GOBIN: /usr/local/bin
with_items:
- mackerelio/mackerel-agent-plugins/mackerel-plugin-linux
- mackerelio/mackerel-agent-plugins/mackerel-plugin-json
- mackerelio/mackerel-agent-plugins/mackerel-plugin-docker
- mackerelio/mackerel-agent-plugins/mackerel-plugin-multicore
- mackerelio/mackerel-agent-plugins/mackerel-plugin-inode
- mackerelio/go-check-plugins/check-procs
- mackerelio/go-check-plugins/check-ntpoffset