Ansible Yum Module挂起交易错误

时间:2017-02-04 09:22:15

标签: ansible yum

我对Ansible很新。 我正在尝试遵循Ansible中角色概念的教程。 我有以下主手册:

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

哪个 webservers 角色具有以下 task / main.yml

- 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

2 个答案:

答案 0 :(得分:23)

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

# yum-complete-transaction --cleanup-only

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

  

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

     

如果找到多个未完成的交易,它将尝试   首先完成最新的一个。你可以多次运行它   清理所有未完成的交易。

答案 1 :(得分:0)

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

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

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

如果您需要安装多个软件包,可以使用以下内容:

- 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模块的安全文档