開発環境を共有しやすくするため、Ansible を使ってツール類をインストールします。
Ansible の Galaxy にある Go の Role がとても分かりやすかったためメモしておきます。
- joshualund.golang - Ansible Galaxy
- jlund/ansible-go - GitHub
事前準備
前提条件として、Ansible がインストールされていることとします。
$ ansible --version
ansible 2.1.2.0
config file =
configured module search path = Default w/o overrides
必要なファイルは末尾に記載してありますので、ディレクトリにまとめて保存してから作業します。
作業手順
まず、Ansible Galaxy から Go をインストールするための Role をダウンロードします。
システムワイドに配置する方法と、ローカルディレクトリに配置する方法があります。
デフォルトは前者ですが、システムや実行ユーザーによっては書き込み権限が問題になることがあります。後者の場合は -p オプションを使います。必要に応じて使い分けましょう。
$ sudo ansible-galaxy install -r roles.yml
$ ansible-galaxy install -p ./roles -r roles.yml
次に、Playbook を書いて実行します。
一応 site.yml
を書いていますが、中で呼び出しているファイルを直接指定しても構いません。
$ sudo ansible-playbook -c local -i development site.yml
なお、ここではローカル固定にしているので SSH を使わないために -c local オプションを付けています。リモートの環境をセットアップする場合はオプションを指定する必要はありません。
Playbook が正常に実行されると、環境変数 GOROOT と PATH が設定されます。再度ログインしてインストールされた Go のバージョンを確認しましょう。
$ go version
go version go1.7.1 linux/amd64
インストールするバージョンやアーキテクチャを変更したい場合は変数を設定しておきます。
- go_tarball
- go_tarball_checksum
- go_version_target
ファイル一覧
以下のファイルを作業ディレクトリにまとめて保存してから実行してください。
-
roles.yml
: Ansible Galaxy からダウンロードする対象 -
site.yml
: Playbook を実行するときのマスターファイル -
tools.yml
: 今回は Go をインストールするための Playbook -
development
: 対象とするホスト名
- src: joshualund.golang
- include: tools.yml
- hosts: all
become_user: yes
roles:
- { role: joshualund.golang }
localhost