加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:34:03 所属栏目:安全 来源:网络整理
导读:我有一个非常简单的Ansible playbook,为docker-compose和docker安装了所有依赖项,但是在安装docker-compose时遇到错误,这是我的playbook上安装docker-compose在CentOS7环境中的任务. #ensure docker-compose and chmod +x /usr/local/bin/docker-compose - n

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

    #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中进行了测试并且它可以工作.
我也尝试使用双引号来包围命令,如命令:“curl …”但它没有改变错误.

最佳答案
如果你想利用shell扩展或shell的环境变量之类的东西,你需要使用shell模块作为helloV pointed out.

但是,在Ansible中,通常最好使用更高级别的模块,如果你不能用另一个模块做你需要的东西,那么只能使用shell或command模块.这种方法可以让您更好地控制执行,例如简单的幂等性和更好的输出可见性.

在你的情况下,你可以使用get_url(我相信Ansible实际上会警告你,如果你试图用卷曲来解决这个模块你可能会更好)从互联网上取东西.

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

  - 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任务.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读