【问题标题】:Ansible Yum Module pending transactions errorAnsible Yum 模块挂起交易错误
【发布时间】:2017-02-04 09:22:14
【问题描述】:

我对 Ansible 很陌生。 我正在尝试遵循有关 Ansible 中角色概念的教程。 我有以下大师手册:

--- # Master Playbook for Webservers
- hosts: apacheweb
  user: test
  sudo: yes
  connection: ssh
  roles:
    - webservers

指的是具有以下task/main.ymlwebservers角色:

- name: Install Apache Web Server
  yum: pkg=httpd state=latest
  notify: Restart HTTPD

还有一个handler/main.yml

- name: Restart HTTPD
  service: name=httpd state=started

当我执行上面提到的 Master Playbook 时,我收到以下错误:

TASK [webservers : Install Apache Web Server] **********************************
fatal: [test.server.com]: FAILED! => {"changed": false, "failed": true, "msg": "The following packages have pending transactions: httpd-x86_64", "rc": 128, "results": ["The following packages have pending transactions: httpd-x86_64"]}

我不明白这个错误对应的是什么。根据我的研究,似乎没有任何类似的东西可能表明我使用 Yum 模块的方式存在问题。

注意:Ansible 版本:

ansible 2.2.1.0
  config file = /etc/ansible/ansible.cfg

【问题讨论】:

    标签: ansible yum


    【解决方案1】:

    目标主机上似乎有未完成/待处理的事务。 尝试安装yum-utils 包以运行yum-complete-transaction 到给出错误的目标主机。

    # yum-complete-transaction --cleanup-only
    

    查看剩余的Fixing There are unfinished transactions 了解更多详情。

    yum-complete-transaction 是一个程序,它发现不完整或 中止系统上的 yum 事务并尝试完成它们。它 查看 transaction-all* 和 transaction-done* 文件,它们可以 如果 yum 事务在 执行中。

    如果它发现不止一个未完成的交易,它会尝试 先完成最近的一个。您可以多次运行它以 清理所有未完成的事务。

    【讨论】:

    • 谢谢,就是这样!干杯
    • 另外,如果你遇到没有足够磁盘空间来完成交易的情况,我可以yum install pacakge-name专门作为一个shell任务而没有这个错误。
    【解决方案2】:

    还有未完成的交易

    sudo yum install yum-utils

    yum-complete-transaction --cleanup-only

    【讨论】:

    • +1 包括yum install yum-utils,因为接受的答案只是说 yum-complete-transactions 不是命令 :)
    【解决方案3】:

    我正在为剧本使用这种类型的配置:

    - name: Install Apache Web Server
      yum: name=httpd state=latest
      notify: Restart HTTPD
    

    据我所知,在 yum 模块的 ansbile 中没有 yum: pkg=httpd 这样的选项(如果我没记错的话,那 pkg=httpd 是基于 debian 的 apt-get发行版)

    如果你需要安装多个包,你可以使用类似的东西:

    - name: "Install httpd packages"
      yum: name={{ item }} state=present
      with_items:
        - httpd
        - httpd-devel
        - httpd-tools
    

    当然,您可以将 state=present 更改为 state=latest 或任何最适合您的选项

    http://docs.ansible.com/ansible/yum_module.html - yum 模块的 ansible 文档

    【讨论】:

    • 谢谢,我明白了。我将 pkg 更改为 name 但我仍然收到相同的错误:以下包有待处理的事务:httpd-x86_64", "rc
    • 在 ssh shell 上手动执行:yum-complete-transaction --cleanup-only。在您完成软件包问题(例如未完成安装的软件包)之前,您将无法使用 ansible 安装软件包
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 2018-09-28
    • 2023-02-20
    相关资源
    最近更新 更多