Ansible 安装 yum 仓库的 RPM 包

3
我正在尝试使用Ansible安装一个rpm软件包。然而,我无法正确地完成这个操作。希望有人能够帮助我解决问题。
以下是我目前为止所做的事情:
1. 使用yum_repository模块(尝试1)
    - name: "Setting up percona repository"
      yum_repository:
        name: "Percona"
        description: "Percona yum repository"
        baseurl: "http://www.percona.com/downloads/percona-release/redhat/latest/percona-release-0.1-4.noarch.rpm"

    - name: "Installing PMM client package"
      yum: pkg={{item}} state=installed
      with_items:
      - pmm-client

结果

    TASK [pmmhosts : Setting up percona repository] **********************************************************************
    changed: [server1]
    changed: [server2]

    TASK [pmmhosts : Installing PMM client package] **********************************************************************
    failed: [server1] (item=[u'pmm-client']) => {"changed": false, "item": ["pmm-client"], "msg": "Failure talking to yum: failure: repodata/repomd.xml from Percona: [Errno 256] No more mirrors to try.
    http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm/repodata/repomd.xml: [Errno -1] Error importing repomd.xml for Percona: Damaged repomd.xml file"}
    failed: [server2] (item=[u'pmm-client']) => {"changed": false, "item": ["pmm-client"], "msg": "Failure talking to yum: failure: repodata/repomd.xml from Percona: [Errno 256] No more mirrors to try.
    http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm/repodata/repomd.xml: [Errno -1] Error importing repomd.xml for Percona: Damaged repomd.xml file"}

2. 使用 yum_repository 模块(尝试 2)

    - name: "Setting up percona repository"
      yum_repository:
        name: "Percona"
        description: "Percona yum repository"
        baseurl: "http://www.percona.com/downloads/percona-release/redhat/latest/"

    - name: "Installing PMM client package"
      yum: pkg={{item}} state=installed
      with_items:
      - pmm-client

结果

    TASK [pmmhosts : Setting up percona repository] **********************************************************************
    changed: [server1]
    changed: [server2]

    TASK [pmmhosts : Installing PMM client package] **********************************************************************
    failed: [server1] (item=[u'pmm-client']) => {"changed": false, "item": ["pmm-client"], "msg": "Failure talking to yum: failure: repodata/repomd.xml from Percona: [Errno 256] No more mirrors to try.
    http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm/repodata/repomd.xml: [Errno -1] Error importing repomd.xml for Percona: Damaged repomd.xml file"}
    failed: [server2] (item=[u'pmm-client']) => {"changed": false, "item": ["pmm-client"], "msg": "Failure talking to yum: failure: repodata/repomd.xml from Percona: [Errno 256] No more mirrors to try.
    http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm/repodata/repomd.xml: [Errno -1] Error importing repomd.xml for Percona: Damaged repomd.xml file"}

3. 使用 shell 模块(尝试 1)

    - name: "Setting up percona repository"
      shell: "yum install -y http://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-4.noarch.rpm"

    - name: "Installing PMM client package"
      yum: pkg={{item}} state=installed
      with_items:
      - pmm-client

结果(运行1)

    TASK [pmmhosts : Setting up percona repository] **********************************************************************
    changed: [server1]
    changed: [server2]
    TASK [pmmhosts : Installing PMM client package] **********************************************************************
    changed: [server1] => (item=[u'pmm-client'])
    changed: [server2] => (item=[u'pmm-client'])

运行结果(第二次)

    TASK [pmmhosts : Setting up percona repository] **********************************************************************
    fatal: [server1]: FAILED! => {"changed": true, "cmd": "yum install -y http://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-4.noarch.rpm", "delta": "0:00:01.363009", "end": "2018-02-28 16:31:23.728102", "msg": "non-zero return code", "rc": 1, "start": "2018-02-28 16:31:22.365093", "stderr": "Error: Nothing to do", "stderr_lines": ["Error: Nothing to do"], "stdout": "Loaded plugins: fastestmirror
    Examining /var/tmp/yum-root-5raeIL/percona-release-0.1-4.noarch.rpm: percona-release-0.1-4.noarch
    /var/tmp/yum-root-5raeIL/percona-release-0.1-4.noarch.rpm: does not update installed package.", "stdout_lines": ["Loaded plugins: fastestmirror", "Examining /var/tmp/yum-root-5raeIL/percona-release-0.1-4.noarch.rpm: percona-release-0.1-4.noarch", "/var/tmp/yum-root-5raeIL/percona-release-0.1-4.noarch.rpm: does not update installed package."]}
    fatal: [server2]: FAILED! => {"changed": true, "cmd": "yum install -y http://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-4.noarch.rpm", "delta": "0:00:01.363009", "end": "2018-02-28 16:31:23.728102", "msg": "non-zero return code", "rc": 1, "start": "2018-02-28 16:31:22.365093", "stderr": "Error: Nothing to do", "stderr_lines": ["Error: Nothing to do"], "stdout": "Loaded plugins: fastestmirror
    Examining /var/tmp/yum-root-5raeIL/percona-release-0.1-4.noarch.rpm: percona-release-0.1-4.noarch
    /var/tmp/yum-root-5raeIL/percona-release-0.1-4.noarch.rpm: does not update installed package.", "stdout_lines": ["Loaded plugins: fastestmirror", "Examining /var/tmp/yum-root-5raeIL/percona-release-0.1-4.noarch.rpm: percona-release-0.1-4.noarch", "/var/tmp/yum-root-5raeIL/percona-release-0.1-4.noarch.rpm: does not update installed package."]}

结论:

到目前为止,使用yum_repository模块已成功安装了仓库。然而,我无法从该仓库中获取任何软件包,因此无法继续使用“yum install”命令。 另一方面,使用shell模块,我能够第一次安装仓库,然后正常运行软件包的安装程序。但是,由于已经安装了仓库的错误,我无法再次重现该状态。


如果您已经登录到机器上,那么运行 yum install pmm-client 是否成功? - man0v
实际上,它返回与Ansible显示的相同的错误消息。 - BlackStar
1
就是这样!:D - man0v
我知道你想说什么。不过,如果我使用类似shell命令的方式来做,就没有错误。应该有一种使用yum_repository模块的方法来完成这个任务。因为这应该是正确的/ansible的做法。 - BlackStar
是的,但问题不在ansible上。正如错误信息所示 - yum无法安装软件包,而不是ansible。 - man0v
1个回答

3

我会修改你的第三个尝试,使用yum模块安装Percona rpm,这将设置存储库并安装所需的GPG密钥,可以实现幂等性:

- name: "Setting up percona repository"
  yum:
    name: "http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm"
    state: present

- name: Installing PMM client package...
....

非常感谢!那就是使用Ansible的方式。 - BlackStar
不用客气。你可能也可以使用yum_repository模块来实现你的第一种方法。你可能缺少的是gpgkeys设置,但最简单的方法是使用Percona提供的rpm包来处理安装设置。 - Yeroc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接