2017-02-04 2 views
4

Je suis très nouveau à Ansible. J'essaie de suivre un tutoriel sur le concept des rôles dans Ansible. Je donne les résultats suivants Maître Playbook:Module Yum Ansible en attente de transactions erreur

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

Ce qui fait référence aux webservers rôle qui a les éléments suivants tâche/main.yml:

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

Et un gestionnaire/main.yml :

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

Lorsque j'ai exec ute le Master Playbook, mentionné ci-dessus, j'obtiens l'erreur suivante:

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"]} 

Je ne comprends pas à quoi correspond cette erreur. Il ne semble pas y avoir quelque chose de similaire, basé sur mes recherches, qui pourrait suggérer le problème avec la façon dont j'utilise le module Yum.

REMARQUE: Ansible Version:

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

Répondre

11

Il semble qu'il y ait des transactions non terminées/en attente sur l'hôte cible. Essayez d'installer le package yum-utils pour exécuter yum-complete-transaction sur les hôtes cibles donnant l'erreur. Pour plus de détails, voir Fixing There are unfinished transactions.

yum-complete-transaction is a program which finds incomplete or aborted yum transactions on a system and attempts to complete them. It looks at the transaction-all* and transaction-done* files which can normally be found in /var/lib/yum if a yum transaction aborted in the middle of execution.

If it finds more than one unfinished transaction it will attempt to complete the most recent one first. You can run it more than once to clean up all unfinished transactions.

+0

Merci, c'était tout! À votre santé – SSF

0

J'utilise pour ansible ce type de configuration pour les Playbooks:

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

En autant que je sache il n'y a pas cette option comme yum: pkg=httpd dans ansbile pour le module yum (si je ne me trompe pas, que pkg = httpd est pour apt-get sur les distributions basées sur debian)

Si vous devez installer plusieurs packages vous pouvez utiliser quelque chose comme:

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

Bien sûr, vous pouvez changer le état = présent à state = dernière ou quelle que soit option pourrait vous convient le mieux

http://docs.ansible.com/ansible/yum_module.html - Documentation pour le module yum

+0

Merci, je vois. J'ai changé le * pkg * en * nom * mais j'ai toujours la même erreur: ** Les paquets suivants ont des transactions en attente: httpd-x86_64 "," rc ** – SSF

+1

Exécuter manuellement sur un shell ssh: yum-complete-transaction - -cleanup-seulement.Vous ne serez pas en mesure d'utiliser ansible pour installer des paquets jusqu'à ce que vous ayez fini vos problèmes de paquets (comme les paquets installés incomplets) –

0

transaction Unfinished restant

sudo yum install yum-utils

miam-complète transaction --cleanup uniquement