2017-10-01 5 views
0

Je reçois l'erreur suivante lorsque vous tentez d'activer un module déjà permis Apache2 sur Ubuntu 16.04:Impossible de définir le module Réécrire activé: Module de réécriture déjà permis

Failed to set module rewrite to enabled: Module rewrite already enabled 

Ma tâche

- name: Enable mod_rewrite 
    apache2_module: 
    state: present 
    name: rewrite 
    force: true 
    ignore_configcheck: true 

L'erreur dans Ansible

TASK [apache : Enable mod_rewrite] **************************************************************************** 
fatal: [vps]: FAILED! => {"changed": false, "failed": true, "msg": "Failed to set module rewrite to enabled: Module rewrite already enabled\n", "rc": 0, "stderr": "", "stderr_lines": [], "stdout": "Module rewrite already enabled\n", "stdout_lines": ["Module rewrite already enabled"]} 
     to retry, use: --limit @/home/me/ansible_ubuntu/ansible/playbook.retry 

Je suis sur Ansible 2.4.0

J'ai essayé d'utiliser le paramètre force, puis ignore_configcheck, tous donnant les mêmes résultats.

Python Client: 2.7.6 Python serveur: 2.7.12

Mise à jour # 1

devrait-il pas tout simplement continuer indiquant qu'il est installé plutôt que de s'arrêter?

Mise à jour # 2

Sortie de a2dismod

[email protected]:/etc/apache2/sites-available$ a2dismod 
Your choices are: access_compat alias auth_basic authn_core authn_file authz_core authz_host authz_user autoindex deflate dir env fastcgi filter headers mime mpm_event negotiation proxy proxy_fcgi rewrite setenvif status 
Which module(s) do you want to disable (wildcards ok)? 

Mise à jour # 3

J'ai changé la tâche par un des commentaires afin de refléter le nom complet du module:

- name: Enable mod_rewrite 
    apache2_module: 
    state: present 
    name: mod_rewrite 
    force: true 
    ignore_configcheck: true 

Vous avez une autre erreur:

TASK [apache : Enable mod_rewrite] **************************************************************************** 
fatal: [vps]: FAILED! => {"changed": false, "failed": true, "msg": "Failed to set module mod_rewrite to enabled: ", "rc": 1, "stderr": "ERROR: Module mod_rewrite does not exist!\n", "stderr_lines": ["ERROR: Module mod_rewrite does not exist!"], "stdout": "", "stdout_lines": []} 
     to retry, use: --limit @/home/me/ansible_ubuntu/ansible/playbook.retry 

Mise à jour # 4

Solution

En task.yml:

  • Nom: Activer mod_rewrite apache2_module: état: nom actuel : Réécriture Force: Vrai ignore_configcheck: true

Dans ansible/modules/web_infrastructure/apache2_modules.py

# a2enmod name replacement to apache2ctl -M names 
text_workarounds = [ 
    ('shib2', 'mod_shib'), 
    ('evasive', 'evasive20_module'), 
    ('rewrite', 'rewrite_module'), 
    ('headers', 'headers_module'), 
] 
+0

Est-ce que 'a2dismod' est installé sur l'hôte cible? – Zlemini

+0

Je crois que c'est, voir mise à jour # 2 – TekiusFanatikus

+0

Cela semble fou, mais Ansible gère certaines situations résultant de cette erreur avec les noms de modules codés en dur. https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/web_infrastructure/apache2_module.py#L153 Pouvez-vous essayer avec 'name: mod_rewrite' à la place? Et vérifiez quel est le nom du module dans les résultats 'apache2ctl -M'. – techraf

Répondre

1

Vous exécutez dans un well-known problem avec Apache 2 sur Ubuntu.

Certains paquets ont des noms différents dans la sortie de apache2ctl -M et c'est aussi le cas pour rewrite. La commande le liste comme rewrite_module qui confond Ansible.

Ansible corrige cela en fournissant un workaround with hard-coded pair of names.Vous pouvez modifier votre module directement en ajoutant ('rewrite', 'rewrite_module'):

text_workarounds = [ 
    ('shib2', 'mod_shib'), 
    ('evasive', 'evasive20_module'), 
    ('rewrite', 'rewrite_module'), 
] 
+0

Donc, directement dans le code d'Ansible? Ou y a-t-il un moyen de le fournir dans mon livre de jeu et de ne pas affecter le code d'Ansible? De plus, toute mise à jour d'Ansible me demandera de refaire ce travail? – TekiusFanatikus

+0

Fonctionne. Édité apache2_module.py. Merci! – TekiusFanatikus