【问题标题】:Ansible install yum repo from rpm package [closed]Ansible 从 rpm 包安装 yum repo [关闭]
【发布时间】:2018-02-28 22:33:47
【问题描述】:

我正在尝试使用 Ansible 安装 rpm 包。但是,我无法弄清楚如何正确地做到这一点。我希望有人能帮我解决这个问题。

这是我到目前为止所做的:

1.使用 yum_repository 模块(试一试)

    - 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 模块(试一试)

    - 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'])

结果(运行 2)

    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是否运行成功?
  • 实际上,它返回的错误信息与 Ansible 显示的相同
  • 你去! :D
  • 我知道你想说什么。不过,如果我通过 shell 之类的命令执行此操作,则没有错误。应该有一种方法可以使用 yum_repository 模块。因为这应该是正确/可靠的方式
  • 是的,但问题不是ansible。正如错误消息所暗示的那样 - yum 无法安装软件包,无法安装

标签: ansible repository rpm yum errno


【解决方案1】:

我将修改您第三次尝试使用yum 模块来安装 Percona rpm,该 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 的做法
  • 不客气。您可能也可以使用yum_repository 模块使用您的第一种方法。您可能缺少 gpgkeys 设置,但使用 Percona 提供的 rpm 来处理设置结束可能是最简单的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 2016-10-25
相关资源
最近更新 更多