【问题标题】:Ansible GVM - Go Version ManagerAnsible GVM - Go 版本管理器
【发布时间】:2015-10-19 13:48:55
【问题描述】:

编写我的第一个 Ansible 脚本。我正在尝试安装 GVM。

当我在盒子上直接运行 gvm 版本时,我安装 GVM ok(我登录盒子并检查)我得到:Go Version Manager v1.0.22 installed at /d1/golang/gvm

但是当我在 Ansible 中将其作为命令运行时:

- name: GVM Version
  shell: gvm version
  become: yes

我收到以下错误:

failed: [prod2] => {"changed": true, "cmd": "gvm version", "delta": "0:00:00.002081", "end": "2015-10-19 13:41:54.123575", "rc": 127, "start": "2015-10-19 13:41:54.121494", "warnings": []}
stderr: /bin/bash: gvm: command not found

FATAL: all hosts have already failed -- aborting

我正在运行一个 bash 脚本,其中包含:source /d1/golang/gvm/scripts/gvm 这应该确保您不必重新启动终端 - 请参阅下面的 ansible 命令。

- name: Run gvm source
  shell: . /etc/profile.d/golang.sh executable=/bin/bash
  become: yes

任何想法我做错了什么?

【问题讨论】:

  • 什么时候采购 gvm 环境?你的 ansible 任务只是调用'gvm'。
  • @JimB 我已经更新了关于采购的主要问题。
  • Ansible 任务是独立运行的。在一个 shell 中更改环境不会影响另一个 shell。您需要安装 gvm,以便您可以在正确的环境中直接调用它。如果只是 PATH 问题,请使用完整路径。

标签: bash go ansible ansible-playbook gvm


【解决方案1】:

我最终在 ansible 命令中运行了两个命令

name: Install go
  shell: . /etc/profile.d/golang.sh && gvm install go1.5 executable=/bin/bash

这确保源已设置,然后允许运行gvm 命令。

【讨论】: