ansible/ansible-剧本版本: 2.1.2.0 / 2.2.0.0
我试图使用yum/apt安装一个包,但是由于用于安装包的存储库位于packagecloud.io中,有时我会收到一条错误消息(当我在运行我的ansible-playbook时传递 -vvv )。
-vvv
[Errno 14] curl#56 - \"TCP connection reset by peer\"\nTrying other mirror. ...some ansible verbose text here.. [Errno 256] No more mirrors to try.
这种事并不总是发生的。如果我再次运行相同的剧本,它可以正常工作,所以失败(连接重置)是随机的。
为了克服这个问题,我想使用Ansible的 until 循环,这是我们必须与 register 变量一起使用的。
until
register
因此,我通过引用Ansible来创建这个剧本操作,以了解如何使用 until 循环 这里 ,但是使用这种语法,我得到了一个“字典”错误,表示结果变量(已注册的) dict没有任何名为stdout的键。然后,我尝试使用result.rc (key字段),它在CentOS机器上工作,但在Ubuntu14.x可靠的迷途机器上失败,其中有以下result.rc dict未出现错误:
- name: Install telegraf agent/collector (RedHat) name: "{{ agent_collector }}" state: "installed" when: ( ansible_os_family == 'RedHat' and company_install_collector == true ) register: result until: result.stdout.find("Installed:") != -1 #The following works in CentOS/RedHat #until: result.rc == 0 - debug: msg="result (redhat) = {{ result }}"
或者(更新我的问题,这是显而易见的)
- name: Install Company Proxy (Ubuntu) name: "{{ company_proxy_pkg }}" state: "installed" when: ( ansible_distribution == 'Ubuntu' and company_install_proxy == true ) register: result