gpt4 book ai didi

docker - 使用 ansible-playbook 安装 docker-compose 时出错

转载 作者:IT老高 更新时间:2023-10-28 21:26:56 39 4
gpt4 key购买 nike

我有一个非常简单的 Ansible playbook,为 docker-compose 和 docker 安装了所有依赖项,但是在安装 docker-compose 时出现错误,这是我的 playbook 上在 CentOS7 环境中安装 docker-compose 的任务。

    #ensure docker-compose and chmod +x /usr/local/bin/docker-compose
- name: Ensure docker-compose is installed and available
command: curl -L https://github.com/docker/compose/releases/download/1.7.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
- name: Ensure permissions docker-compose
command: chmod +x /usr/local/bin/docker-compose

出现如下错误:

TASK: [Ensure docker-compose is installed and available] ********************** 
failed: [nutrilife-aws] => {"changed": true, "cmd": ["curl", "-L", "https://github.com/docker/compose/releases/download/1.7.0-rc1/docker-compose-`uname", "-s`-`uname", "-m`", ">", "/usr/local/bin/docker-compose"], "delta": "0:00:00.004592", "end": "2016-03-26 14:19:41.852780", "rc": 2, "start": "2016-03-26 14:19:41.848188", "warnings": ["Consider using get_url module rather than running curl"]}
stderr: curl: option -s`-`uname: is unknown
curl: try 'curl --help' or 'curl --manual' for more information

FATAL: all hosts have already failed -- aborting

PLAY RECAP ********************************************************************
to retry, use: --limit @/home/mmaia/playbook.retry

nutrilife-aws : ok=4 changed=0 unreachable=0 failed=1

我被这个简单的错误困住了几个小时。我从标准 docker 站点获得了命令,并直接在 shell 中进行了测试,它可以工作。我也尝试过使用双引号将命令括起来,例如 command: "curl ..."但它并没有改变错误。

最佳答案

作为 helloV pointed out您需要使用 shell如果你想使用 shell 扩展或 shell 的环境变量等模块。

但是,在 Ansible 中,您通常最好使用更高级别的模块并且只使用 shellcommand如果你不能用另一个模块做你需要的事情,模块。这种方法可以让您更好地免费控制执行,例如简单的幂等性和更好的输出可见性。

在您的情况下,您可以使用 get_url (我相信 Ansible 实际上会警告您,如果您尝试使用 curl 进行攻击,使用此模块可能会更好)从 Internet 获取内容。

在您的情况下,您的任务可能如下所示:

  - name: Ensure docker-compose is installed and available
get_url:
url : https://github.com/docker/compose/releases/download/1.7.0-rc1/docker-compose-{{ ansible_system }}-{{ ansible_userspace_architecture }}
dest: /usr/local/bin/docker-compose
mode: 'u+x,g+x'

上述任务使用 gathering facts 返回的特殊变量在目标主机上,以便您的任务可以在 Linux 系统或 OS X 上正常运行(您需要 .exe 的条件后缀才能使 Windows 链接正常工作,并且显然需要不同的目标路径等) .

它还使用 file 中的 mode 参数模块为用户和组添加执行权限,这样你就可以避免你的 chmod 任务。

关于docker - 使用 ansible-playbook 安装 docker-compose 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36236449/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com