Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ansible - Pb d'exécution du playbook mediawiki.yml

    14 avril 2022 à 15:35:13

    Bonjour, 

    Je me permets de soliciter votre parce que je suis bloquer sur une partie du cours:  https://openclassrooms.com/fr/courses/2035796-utilisez-ansible-pour-automatiser-vos-taches-de-configuration/6373887-controlez-lexecution-des-operations-et-enchainez-plusieurs-actions 

    J'ai une erreur qui apparait lorsque j'exécute le playbook install-mediawiki.yml.

    voici mon environement de travail : 

    • node-manager - 192.168.0.244 => Redhat 8 
    • http1 - 192.168.0.243 => Redhat 8
    • bdd1 - 192.168.0.245 => Redhat 8
    La résolution des noms a bien été configuré dans le fichier /etc/hosts de chaque node.
    Le contenu de mon fichier inventaire.ini: 
    [user-ansible@node-manager ~]$ cat inventaire.ini
    [apache]
    http1
    [db]
    bdd1
    

    Le problème apparait lorsque j'exécute le playbook install-mediawiki.yml

    (ansible) [user-ansible@node-manager ~]$ ansible-playbook -i inventaire.ini --user user-ansible --become --ask-become-pass --ask-vault-pass install-mediawiki.yml
    [DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with Ansible 2.12. Current version: 3.6.8 (default, Dec  5 2019, 15:45:45) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]. This
    feature will be removed from ansible-core in version 2.12. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
    BECOME password:
    Vault password:
    
    PLAY [mediaWiki db configuration] ****************************************************************************************************************************************************************************************
    
    TASK [mediawiki/confdb : mediawiki database] *****************************************************************************************************************************************************************************
    ok: [bdd1]
    
    TASK [mediawiki/confdb : mediawiki user+privileges] **********************************************************************************************************************************************************************
    ok: [bdd1] => (item=http1)
    
    PLAY [MediaWiki apache configuration] ************************************************************************************************************************************************************************************
    
    TASK [mediawiki/confapache : mediawiki directory] ************************************************************************************************************************************************************************
    ok: [http1]
    
    TASK [mediawiki/confapache : uncomress mediawiki archive] ****************************************************************************************************************************************************************
    ok: [http1]
    
    TASK [mediawiki/confapache : mediawiki configuration] ********************************************************************************************************************************************************************
    [WARNING]: Unable to use /usr/share/httpd/.ansible/tmp as temporary directory, failing back to system: [Errno 13] Permission denied: '/usr/share/httpd/.ansible'
    failed: [http1 -> http1] (item=http1) => {"ansible_loop_var": "item", "changed": true, "cmd": ["php", "install.php", "--scriptpath", "/mediawiki", "--dbname", "mediawiki", "--lang", "fr", "--dbuser", "mediawiki", "--dbpass", "foobar", "--pass", "foobar", "--dbserver", "bdd1", "ELS", "admin"], "delta": "0:00:00.342569", "end": "2022-04-14 09:12:21.304818", "item": "http1", "msg": "non-zero return code", "rc": 1, "start": "2022-04-14 09:12:20.962249", "stderr": "", "stderr_lines": [], "stdout": "PHP 7.2.24 est installé.\nLa bibliothèque graphique GD intégrée a été trouvée. La miniaturisation d'images sera activée si vous activez le téléversement de fichiers.\nLogiciel de contrôle de version Git non trouvé.\nUtilisation de l'URL de serveur \"/mediawiki\".\nAttention: Votre répertoire par défaut pour les imports(/var/www/html/mediawiki/images/) n'est pas contrôlé concernant la vulnérabilité d'exécution de scripts arbitraires lors de l'installation CLI.\nUtilisation de l’extension PECL intl pour la normalisation Unicode.\nL’environnement a été vérifié. Vous pouvez installer MediaWiki.\nCréation de la base de données\nCannot access the database: Connection refused (bdd1). Vérifier le nom d’hôte, le nom d’utilisateur et le mot de passe ci-dessous puis réessayer. ", "stdout_lines": ["PHP 7.2.24 est installé.", "La bibliothèque graphique GD intégrée a été trouvée. La miniaturisation d'images sera activée si vous activez le téléversement de fichiers.", "Logiciel de contrôle de version Git non trouvé.", "Utilisation de l'URL de serveur \"/mediawiki\".", "Attention: Votre répertoire par défaut pour les imports(/var/www/html/mediawiki/images/) n'est pas contrôlé concernant la vulnérabilité d'exécution de scripts arbitraires lors de l'installation CLI.", "Utilisation de l’extension PECL intl pour la normalisation Unicode.", "L’environnement a été vérifié. Vous pouvez installer MediaWiki.", "Création de la base de données", "Cannot access the database: Connection refused (bdd1). Vérifier le nom d’hôte, le nom d’utilisateur et le mot de passe ci-dessous puis réessayer. "]}
    
    NO MORE HOSTS LEFT *******************************************************************************************************************************************************************************************************
    
    PLAY RECAP ***************************************************************************************************************************************************************************************************************
    bdd1                       : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
    http1                      : ok=2    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
    


    Voici le contenu du fichier : 

    (ansible) [user-ansible@node-manager ~]$ cat roles/mediawiki/confapache/tasks/main.yml
    ---
    
    #1. Création du répertoire pour l'instaltion des fichiers Mediawiki
    - name: "mediawiki directory"
      file:
        path: "{{mediawiki_directory}}"
        owner: "apache"
        group: "apache"
        state: directory
    
    #2. Décompresse le fichier source archive Mediawiki et le formate sans extension
    - name: "uncomress mediawiki archive"
      unarchive:
        src: "{{mediawiki_archive_url}}"
        dest: "{{mediawiki_directory}}"
        owner: "apache"
        group: "apache"
        remote_src: yes
          # supprime mediawiki-1.xx.x/ du chemin
        extra_opts: --transform=s/mediawiki-[0-9\.]*\///
    
    #3. Exécute le tâche avec l'utilisateur apache, se place dans le répertoire de maintenance et exécute la commande de configuration si le fichier localsetting.php n'existe pas
    - name: "mediawiki configuration"
      become: yes
      become_user: "apache"
      args:
        creates: "{{mediawiki_directory}}/LocalSettings.php"
        chdir: "{{mediawiki_maintenance_directory}}"
      command:
        php install.php --scriptpath /{{mediawiki_name}}
            --dbname mediawiki --lang fr
            --dbuser {{mediawiki_db_user}}
            --dbpass {{mediawiki_db_password}}
            --pass {{mediawiki_admin_password}}
            --dbserver {{mediawiki_db_host}}
              {{mediawiki_title}} {{mediawiki_admin_user}}
      run_once: yes
      delegate_to: http1
      with_items: "{{groups.apache}}"
    
    #4. Exécute la tâche avec l'utilisatteur apache, se place dans le répertoire de maintenance et exćute la commande de mise à jour de la base une seule fois
    - name: "mediawiki db update"
      become: yes
      become_user: "apache"
      command: php update.php --quick
      args:
        chdir: "{{mediawiki_maintenance_directory}}"
      run_once: yes
      register: resultat
      changed_when: "' ...done.' in resultat.stdout"
    

    Erreur : 
    TASK [mediawiki/confapache : mediawiki configuration] ********************************************************************************************************************************************************************
    [WARNING]: Unable to use /usr/share/httpd/.ansible/tmp as temporary directory, failing back to system: [Errno 13] Permission denied: '/usr/share/httpd/.ansible'
    failed: [http1 -> http1] (item=http1) => {"ansible_loop_var": "item", "changed": true, "cmd": ["php", "install.php", "--scriptpath", "/mediawiki", "--dbname", "mediawiki", "--lang", "fr", "--dbuser", "mediawiki", "--dbpass", "foobar", "--pass", "foobar", "--dbserver", "bdd1", "ELS", "admin"], "delta": "0:00:00.342569", "end": "2022-04-14 09:12:21.304818", "item": "http1", "msg": "non-zero return code", "rc": 1, "start": "2022-04-14 09:12:20.962249", "stderr": "", "stderr_lines": [], "stdout": "PHP 7.2.24 est installé.\nLa bibliothèque graphique GD intégrée a été trouvée. La miniaturisation d'images sera activée si vous activez le téléversement de fichiers.\nLogiciel de contrôle de version Git non trouvé.\nUtilisation de l'URL de serveur \"/mediawiki\".\nAttention: Votre répertoire par défaut pour les imports(/var/www/html/mediawiki/images/) n'est pas contrôlé concernant la vulnérabilité d'exécution de scripts arbitraires lors de l'installation CLI.\nUtilisation de l’extension PECL intl pour la normalisation Unicode.\nL’environnement a été vérifié. Vous pouvez installer MediaWiki.\nCréation de la base de données\nCannot access the database: Connection refused (bdd1). Vérifier le nom d’hôte, le nom d’utilisateur et le mot de passe ci-dessous puis réessayer. ", "stdout_lines": ["PHP 7.2.24 est installé.", "La bibliothèque graphique GD intégrée a été trouvée. La miniaturisation d'images sera activée si vous activez le téléversement de fichiers.", "Logiciel de contrôle de version Git non trouvé.", "Utilisation de l'URL de serveur \"/mediawiki\".", "Attention: Votre répertoire par défaut pour les imports(/var/www/html/mediawiki/images/) n'est pas contrôlé concernant la vulnérabilité d'exécution de scripts arbitraires lors de l'installation CLI.", "Utilisation de l’extension PECL intl pour la normalisation Unicode.", "L’environnement a été vérifié. Vous pouvez installer MediaWiki.", "Création de la base de données", "Cannot access the database: Connection refused (bdd1). Vérifier le nom d’hôte, le nom d’utilisateur et le mot de passe ci-dessous puis réessayer. "]}
    


    Pourriez vous m'éclairer sur ce problème ? 

    Merci d'avance 

    • Partager sur Facebook
    • Partager sur Twitter
      14 avril 2022 à 19:08:56

      Bonjour,

      je vois une petite coquille typographique qui ne joue aucun rôle important (c'est juste le nom donné à la tâche).
      Dans le fichier roles/mediawiki/confapache/tasks/main.yml à la ligne 13,
      c'est uncompress

      Je vois que tu as essayé d'écrire directement http1 à la place de item (ligne 39: delegate_to: http1). J'avais aussi essayé, sans succès.

      J'ai eu le même problème que toi, disons au même endroit, à l'exécution de la tâche 3 (je peux le voir, car tu a posté tout le nécessaire… :) sinon je n'aurais jamais pu comparer quoi que ce soit). Bref, j'avais un peu cherché, mais sans exactement trouver.

      Par contre, j'avais réussi en faisant autrement: je suis reparti du début du cours, sans passer par un environnement python virtuel.

      Mon post date d'il y a peu: https://openclassrooms.com/forum/sujet/ansible-failed-to-connect-to-the-host-via-ssh-1

      Dans mon post, c'est noté http2 et bdd2, il correspondent à centOS7. J'avais aussi comme toi essayé avec CentOS8, dont les nodes sont http1 et bdd1.

      Constatant que ça ne fonctionnait pas avec CentOS8, j'avais d'abord pensé que cela pouvait venir de changement entre CentOS7 et CenOS8, donc j'avais tout refait avec deux nodes CentOS7 pour coller le plus au cours. C'est pour cela que je me suis retrouvé avec http2 et bdd2… Mais cela n'avais pas marché !!

      Ensuite, j'avais testé avec CentOS7 pour tes nodes, mais sans passer par un environnement python virtuel (e.p.v) pour le node-master, et ça a marché. :)

      J'ai eu la flemme d'essayer avec les nodes CentOS8 et un node-master sans e.p.v.

      =================================

      Je soupçonne une configuration "incomplète" au niveau du node-master avec un environnement python virtuel… Un question de précédence, il y a d'autres endroits où on peut configurer l'inventaire notamment. Mais je t'avoue que je me suis arrêté là !!

      Si des fois tu trouves, n'hésite pas à donner des infos, des pistes. :)

      -
      Edité par DenebeDenebe 14 avril 2022 à 20:01:25

      • Partager sur Facebook
      • Partager sur Twitter
        19 avril 2022 à 13:39:44

        Bonjour, 

        Je m'arrache les cheveux avec ce problème mais je vais continuer à creuser pour essayer de trouver une solution. 

        Sinon je repartirais à zéro sur du Centos 7 afin de terminer le cours. 

        En tout cas merci pour ton aide :)

        • Partager sur Facebook
        • Partager sur Twitter
          20 avril 2022 à 11:02:33

          Bonjour,

          dans un premier temps, ça vaut peut-être le coup d'essayer avec un node-manager sans utiliser d'environnement python virtuel (e.p.v), et avec tes deux nodes CentOS8.

          Je te dis ça, car j'ai essayé avec deux nodes CentOS7 et un node-manager sans e.p.v -> ça marche.

          Donc si tu as le courage, essaye plutôt avec tes deux nodes CentOS8 (avec les petits changement à faire comparé à CentOS7, ils ont déjà été évoqués) et un node-manager sans e.p.v.
          Dans ce cas, il n'est pas nécessaire d'effectuer ces étapes:

          Mais il est nécessaire d'utiliser le python livré avec le système, et pareil pour ansible…

          Accroche-toi, tu n'es plus très loin de réussir. :)

          -
          Edité par DenebeDenebe 20 avril 2022 à 11:05:02

          • Partager sur Facebook
          • Partager sur Twitter
            27 octobre 2023 à 10:29:09

            Bonjour,

            j'ai eu le même problème sur Debian 11, ce que j'ai fait à part la vérification, c'est que j'ai changer le mot passe "foobar" en mettant un mot de passe qui satisfait les exigences de Ansible (au moins 10 caractères)

            • Partager sur Facebook
            • Partager sur Twitter

            Ansible - Pb d'exécution du playbook mediawiki.yml

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown