【发布时间】:2017-02-02 12:29:58
【问题描述】:
我最近尝试在运行 rhel 的远程主机上安装带有 ansible 的无 rpmfusion 存储库。突然之间,服务器无法访问了。
运行 ansible 的 PC 在 Ubuntu 16.10 上运行:
$> ansible --version
ansible 2.2.1.0
config file =
configured module search path = Default w/o overrides
我决定通过使用 ansible 迭代 rpmfusion 存储库的镜像列表并使用第一个来解决这个问题,它有效,也就是遍历镜像列表,并在成功时停止。
这是之前的代码:
- name: Install RPM-Fusion free
yum:
name: http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm
state: present
disable_gpg_check: true
become: true
这是我尝试过的:
- name: Install RPM-Fusion free
yum:
name: "{{ item }}"
state: present
disable_gpg_check: true
become: true
register: result
until: result | succeeded
retries: 4
with_items: "{{ rpmfusion_free_mirrors }}"
rpmfusion_free_mirrors:
- "http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm"
- "http://mirrors.netix.net/rpmfusion/free/el/rpmfusion-free-release-6.noarch.rpm"
- "http://ftp-stud.hs-esslingen.de/pub/Mirrors/rpmfusion.org/free/el/rpmfusion-free-release-6.noarch.rpm"
- "http://mirror.de.leaseweb.net/rpmfusion/free/el/rpmfusion-free-release-6.noarch.rpm"
正如您可能已经猜到的那样,输出失败:
失败 - 重试:任务:install-backend-rpms:免费安装 RPM-Fusion(还剩 4 次重试)。 失败 - 重试:任务:install-backend-rpms:免费安装 RPM-Fusion(还剩 3 次重试)。 失败 - 重试:任务:install-backend-rpms:免费安装 RPM-Fusion(还剩 2 次重试)。 失败 - 重试:任务:install-backend-rpms:免费安装 RPM-Fusion(还剩 1 次重试)。 失败:[backend_ans_test] (item=[u'http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm', u'http://mirrors.netix.net/rpmfusion/free/ el/rpmfusion-free-release-6.noarch.rpm', u'http://ftp-stud.hs-esslingen.de/pub/Mirrors/rpmfusion.org/free/el/rpmfusion-free-release-6.noarch.rpm', u'http://mirror.de.leasew eb.net/rpmfusion/free/el/rpmfusion-free-release-6.noarch.rpm']) => {"attempts": 4, "failed": true, "item": ["http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion -free-release-6-1.noarch.rpm", "http://mirrors.netix.net/rpmfusion/free/el/rpmfusion-free-release-6.noarch.rpm", "http://ftp-stud.hs-esslingen.de/pub/Mirrors/rpmfusion.org/ free/el/rpmfusion-free-release-6.noarch.rpm", "http://mirror.de.leaseweb.net/rpmfusion/free/el/rpmfusion-free-release-6.noarch.rpm"], "msg": "下载失败http://dow nload1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm, 'NoneType' 对象没有属性 'read'"}
在我看来,当其中一个镜像无法访问时,好像 ansible 认为任务失败了。但是,我希望 ansible 通过镜像并停止循环,直到其中一个成功。
我偶然发现了 2014 年的一个 google-groups 线程 (GoogleGroups) 指出,这根本行不通。你们有谁知道,如果现在有这样的功能,或者我是否可以以不同的方式实现一些类似的功能?
提前致以最良好的祝愿和感谢!
【问题讨论】:
标签: ansible ansible-2.x