Je me permet de solliciter votre aide. J'ai un peu regardé avant et je n'ai pas vue d'erreur semblable (excusez moi si le sujet existe déjà).
Lors de l'exécution du playbook mediawiki une erreur assez conséquente apparait.
(ansible2.9.27) user-ansible@nodemanager:~$ ansible-playbook -i inventaire.ini --user user-ansible --become --ask-become-pass --ask-vault-pass install-mediawiki.yml
BECOME password:
Vault password:
PLAY [MediaWiki db configuration] ********************************************************************************************************************
TASK [mediawiki/confdb : mediawiki database] *********************************************************************************************************
[DEPRECATION WARNING]: Distribution centos 9 on host bdd1 should use /usr/libexec/platform-python, but is using /usr/bin/python for backward
compatibility with prior Ansible releases. A future Ansible release will default to using the discovered platform python for this host. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. This feature will be removed in version
2.12. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
ok: [bdd1]
TASK [mediawiki/confdb : mediawiki user+privileges] **************************************************************************************************
[WARNING]: Module did not set no_log for update_password
ok: [bdd1]
PLAY [MediaWiki apache configuration] ****************************************************************************************************************
TASK [mediawiki/confapache : mediawiki directory] ****************************************************************************************************
[DEPRECATION WARNING]: Distribution centos 9 on host http1 should use /usr/libexec/platform-python, but is using /usr/bin/python for backward
compatibility with prior Ansible releases. A future Ansible release will default to using the discovered platform python for this host. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. This feature will be removed in version
2.12. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
ok: [http1]
TASK [mediawiki/confapache : uncompress 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 non accordée:
'/usr/share/httpd/.ansible'
fatal: [http1 -> http1]: FAILED! => {"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.264825", "end": "2022-01-27 01:11:45.818319", "msg": "non-zero return code", "rc": 1, "start": "2022-01-27 01:11:45.553494", "stderr": "PHP Warning: \"continue\" targeting switch is equivalent to \"break\". Did you mean to use \"continue 2\"? in /var/www/html/mediawiki/includes/json/FormatJson.php on line 297\nPHP Warning: Undefined array key \"SERVER_NAME\" in /var/www/html/mediawiki/includes/GlobalFunctions.php on line 1432\nPHP Warning: \"continue\" targeting switch is equivalent to \"break\". Did you mean to use \"continue 2\"? in /var/www/html/mediawiki/languages/LanguageConverter.php on line 773\nPHP Warning: Undefined array key \"SERVER_NAME\" in /var/www/html/mediawiki/includes/GlobalFunctions.php on line 1432\nPHP Warning: compact(): Undefined variable $fallback in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $messages in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $rtl in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $capitalizeAllNouns in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $digitTransformTable in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $minimumGroupingDigits in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $fallback8bitEncoding in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $linkPrefixExtension in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $linkPrefixCharset in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $datePreferences in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $datePreferenceMigrationMap in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $defaultDateFormat in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $extraUserToggles in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $imageFiles in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $preloadedMessages in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $digitGroupingPattern in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $pluralRules in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $pluralRuleTypes in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $compiledPluralRules in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $messages in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $minimumGroupingDigits in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $digitGroupingPattern in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $pluralRules in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $pluralRuleTypes in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $compiledPluralRules in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $messages in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $minimumGroupingDigits in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $digitGroupingPattern in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $pluralRules in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $pluralRuleTypes in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531\nPHP Warning: compact(): Undefined variable $compiledPluralRules in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "stderr_lines": ["PHP Warning: \"continue\" targeting switch is equivalent to \"break\". Did you mean to use \"continue 2\"? in /var/www/html/mediawiki/includes/json/FormatJson.php on line 297", "PHP Warning: Undefined array key \"SERVER_NAME\" in /var/www/html/mediawiki/includes/GlobalFunctions.php on line 1432", "PHP Warning: \"continue\" targeting switch is equivalent to \"break\". Did you mean to use \"continue 2\"? in /var/www/html/mediawiki/languages/LanguageConverter.php on line 773", "PHP Warning: Undefined array key \"SERVER_NAME\" in /var/www/html/mediawiki/includes/GlobalFunctions.php on line 1432", "PHP Warning: compact(): Undefined variable $fallback in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $messages in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $rtl in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $capitalizeAllNouns in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $digitTransformTable in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $minimumGroupingDigits in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $fallback8bitEncoding in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $linkPrefixExtension in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $linkPrefixCharset in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $datePreferences in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $datePreferenceMigrationMap in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $defaultDateFormat in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $extraUserToggles in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $imageFiles in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $preloadedMessages in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $digitGroupingPattern in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $pluralRules in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $pluralRuleTypes in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $compiledPluralRules in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $messages in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $minimumGroupingDigits in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $digitGroupingPattern in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $pluralRules in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $pluralRuleTypes in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $compiledPluralRules in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $messages in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $minimumGroupingDigits in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $digitGroupingPattern in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $pluralRules in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $pluralRuleTypes in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531", "PHP Warning: compact(): Undefined variable $compiledPluralRules in /var/www/html/mediawiki/includes/cache/localisation/LocalisationCache.php on line 531"], "stdout": "PHP 8.0.12 est installé.\nAttention : impossible de trouver APCu ou WinCache. La mise en cache d’objets n’est pas activée.\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: No route to host (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 8.0.12 est installé.", "Attention : impossible de trouver APCu ou WinCache. La mise en cache d’objets n’est pas activée.", "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: No route to host (bdd1). Vérifier le nom d’hôte, le nom d’utilisateur et le mot de passe ci-dessous puis réessayer. "]}
Voici le contenu du fichier qui pose problème en parti.
---
#1. Création du repertoire pour l’installation 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: "uncompress 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 la 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"
#4. Exécute la tâche avec l'utilisateur apache, se place dans le répertoire de maintenance et exécute la commande de mise à jour de la baseune seule fois
- name: "mediawiki db update"
become: yes
become_user: "apache"
command:
php update.php --quick
args:
chdir: "{{mediawiki_maintenance_directory}}"
# La mise à jour à besoin d'être lancée une seule fois
run_once: yes
register: resultat
changed_when: "' ...done.' in resultat.stdout"
Je ne sais pas pourquoi mes groupes ne fonctionne pas. (pourtant je ping http1 et bdd1 et mon fichier inventaire.ini a bien les groupes renseignés) J'ai donc indiqué directement http1 dans delegate_to
Également je vous partage le fichier de variables globales qui est sollicité Mais je n'ai rien changé si ce n'est les clé. (en relisant le fichier peut être lui indiquer la dernière version du wiki?)
---
# nom de la base de données
mediawiki_db_name: "mediawiki"
# nom de l’utilisateur de la base de données et son mot de passe
mediawiki_db_user: "mediawiki"
mediawiki_db_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
36303465393465353930367638353332653636616562366339356466373862333934666162363834
3831323563616534396536346364383262363762663433610a316634303839386539616661316461
62303332393135663631656538373031363363646636626335343134623535313737353637366264
3437336235353033640a356164666134646135313138326564303930633331313235353439386632
3731
# nom et mot de passe de l’administrateur Mediawiki
mediawiki_admin_user: "admin"
mediawiki_admin_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
36303465393465353930367638353332653636616562366339356466373862333934666162363834
3831323563616534396536346364383262363762663433610a316634303839386539616661316461
62303332393135663631656538373031363363646636626335343134623535313737353637366264
3437336235353033640a356164666134646135313138326564303930633331313235353439386632
3731
# nom du Mediawiki et son titre
mediawiki_name: "mediawiki"
mediawiki_title: "ELS"
# l’emplacement du répertoire d'installation de Mediawiki
mediawiki_directory: "/var/www/html/{{mediawiki_name}}"
# répertoire de maintenance de Mediawiki
mediawiki_maintenance_directory: "{{mediawiki_directory}}/maintenance"
# Definie le premier node du groupe mariadb
mediawiki_db_host: "{{groups.db.0}}"
# l’url des sources Mediawiki
mediawiki_archive_url: "https://releases.wikimedia.org/mediawiki/1.31/mediawiki-1.31.1.tar.gz"
J'imagine que le problème vient de la fin du message et plus précisément soit de l'user ou du mot de passe.
Cannot access the database: No route to host (bdd1). Vérifier le nom d’hôte, le nom d’utilisateur et le mot de passe ci-dessous puis réessayer
dans ton fichier roles/mediawiki/confapache/tasks/main.yml, à la ligne 20 tu as écrit:
extra_opts: --transform=s/mediawiki-[0-9.]*///
Ne faut-il pas échapper quelques caractères ? Il s'agit de BRE 'basic regular expression' et non de ERE 'extended regular expression'.
. comme ceci \.
/ comme ceci \/
Chez moi j'ai:
extra_opts: --transform=s/mediawiki-[0-9\.]*\///
Rem:
Je viens d'essayer par curiosité sans les caractères d'échappement, j'obtiens une erreur chez moi. C'est bizarre que tu n'aies pas eu d'erreur ? (au moins pour le deuxième caractère d'échappement)
=> le premier \ n'échappe rien et est considéré comme un caractère littéral, et donc il est ici inutile !
=> le cours a pris la tangente !
Par contre, il reste le second échappement \, celui échappant un slash/. Sans lui, la commande "sed" considére ce slash / comme un délimiteur de la commande sed. Et de part en part, un slash / est de trop.
Le second échappement doit rester je pense, sinon il y a un slah / en trop ?
Ici le but est de changer tous les chemins de chacun des fichiers pendant le désarchivage comme ceci:
Le second échappement doit rester je pense, sinon il y a un slash / en trop ?
oui.
il y a obligatoirement un numéro de version ? alors je remplacerais l'astérisque par un plus, pour dire qu'il ne peut pas ne rien y avoir (*= un, plusieurs, ou aucun) :
extra_opts: --transform=s/mediawiki-[0-9\.]\+\///
- Edité par dantonq 6 mars 2022 à 0:06:43
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
alors je remplacerais l'astérisque par un plus, pour dire qu'il ne peut pas ne rien y avoir (*= un, plusieurs, ou aucun) :
extra_opts: --transform=s/mediawiki-[0-9\.]\+\///
- Edité par dantonq il y a environ 7 heures
Obligatoirement un numéro de version ? Je dirais que oui. Factuellement le fichier à télécharger proposé dans le cours en a un.
Tu peux le voir vers la fin du premier post à la ligne 40, ou à la fin de ce fichier (rôle) dans le cours. La toute dernière ligne alloue "https://releases.wikimedia.org/mediawiki/1.31/mediawiki-1.31.1.tar.gz" à la variable mediawiki_archive_url. Cette dernière est la source que l'on souhaite désarchiver, elle est utilisée à la ligne 14 d'un des codes de ce premier post… Sinon ici dans le cours.
Le + ne doit pas être échappé. Sinon l'idée est intéressante.
================================================
DenebeDenebe a écrit:
=> le premier \ n'échappe rien et est considéré comme un caractère littéral, et donc il est ici inutile !
=> le cours a pris la tangente !
- Edité par DenebeDenebe il y a environ 12 heures
Correction: [\.] est équivalent [.] , donc \ n'est pas considéré comme un caractère littéral dans ce cas. Cela dit, il est inutile… Testé ici: https://www.regextester.com/111539
Tout d'abord merci à ceux qui ont répondu à la question de l'auteur du sujet, car je suis également bloqué au même niveau que lui
Je suis complètement débutant, mais quand on regarde le code d'erreur, on voit clairement :
"PHP Notice: Undefined index: SERVER_NAME in /var/www/html/mediawiki/includes/GlobalFunctions.php on line 1432\nPHP Notice: Undefined index: SERVER_NAME in /var/www/html/mediawiki/includes/GlobalFunctions.php on line 1432"
On dirait que le fichier LocalSettings.php ne se crée pas, et que du coup PHP ne connait pas le serveur distant... ?!
Peut-être que je me trompe, mais en tous cas sur mon serveur HTTP1, je ne trouve pas LocalSettings.php.
Est-ce donc possible que ce soit cela qui pose problème ?
Je suis complètement débutant, mais quand on regarde le code d'erreur, on voit clairement :
…
On dirait que le fichier LocalSettings.php ne se crée pas, et que du coup PHP ne connait pas le serveur distant... ?!
Peut-être que je me trompe, mais en tous cas sur mon serveur HTTP1, je ne trouve pas LocalSettings.php
Bonjour Romain,
pour Mickael Co, il faudrait maintenant qu'il essaye ce qui a été proposé…
Te concernant, il manque beaucoup d'informations, c'est difficile de te répondre. Le mieux est d'ouvrir ton post, je pense.
Cela étant dit, j'ai aussi personnellement cherché de longues heures à savoir pourquoi le fichier LocalSettings.php ne se créait-il pas, oui, j'ai eu le même problème. J'ai essayé de le debuguer, sans succès. Et finalement j'ai contourné le problème en ne passant plus par un environnement python virtuel.
Ma solution est ici. Le début de mon post était légèrement différent, bien que dans les "mêmes eaux".
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.284007", "end": "2022-04-13 11:38:21.389883", "item": "http1", "msg": "non-zero return code", "rc": 1, "start": "2022-04-13 11:38:21.105876", "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: No route to host (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: No route to host (bdd1). Vérifier le nom d’hôte, le nom d’utilisateur et le mot de passe ci-dessous puis réessayer. "]}
-----
Pourriez vous me dire comment vous avez résolu ce problème ?
Désolé un peu absent j'ai passé un diplôme RNCP niveau 6 et maintenant je cherche une alternance pour un RNCP niveau 7 équivalent d'un master.
Pour le cours ansible j'ai bloqué sur le dernier chapitre Python n'ayant aucune connaissance j'ai abandonné le temps de me concentrer sur mon diplôme le stage etc. Je vais tenter un copier coller de mes notes pas sur de ce que ca va rendre ici.
TP ANSIBLE Déploiement d’un wikimedia avec Ansible
(* Les étoiles représentent des informations à renseigner)
virtualenv (outils python permettant de créer un environnement isolé)
sshpass (paquet permettant une connexion SSH avec Ansible) ansible v5.2.0 (ou core 2.12)
- 1 node http1 (centos stream 9) 192.168.192.10
python
apache
php
mediawiki
- 1 node bdd1 (centos stream 9) 192.168.192.15
python
mariadb
mediawiki
- 1 windows client connexion ssh dhcp
kitty
1 Prérequis configuration générale:
1.1Installation des OS 1.2mise à jour (root) ubuntu
apt update && apt upgrade
centos
yum update && yum upgrade
1.3adresse ip fixe
ubuntu
si non initialisé
netplan generate
fichier de config
vi /etc/netplan/*.yaml
network:
ethernets:
eth0:
addresses: [192.168.1.200/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
dhcp4: false
dhcp6: false
version: 2
applique les changements
netplan apply
relancer le service
systemctl restart systemd-networkd
affiche les informations réseaux
ip a
centos
affiche les informations réseaux
ip a
création d’un fichier de configuration réseau avec le nom de l’interface récupéré
vi /etc/sysconfig/network-scripts/ifcfg-*
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=yes
IPADDR=192.168.0.15
GATEWAY=192.168.0.254
NETMASK=255.255.255.0
DNS1=127.0.0.1
relancer la machine reboot
affiche les informations réseaux
ip a 1.4 sécurité sur les nodes (pour le tp on désactivera les éléments de sécurité, en prod il faudra ajuster la sécurité en fonction des flux autorisés.)
désactiver temporairement SElinux :
setenforce 0
désactiver définitivement SElinux :
éditez le fichier /etc/selinux/config
puis ajoutez-y la ligne SELINUX=permissive
désactiver temporairement le firewalling :
systemctl stop firewalld.service
pour désactiver définitivement le firewalling :
systemctl disable firewalld.service
1.5 résolutions de noms (sans dns avec le fichier hosts) vi /etc/hosts
192.168.122.11 http1
192.168.122.12 bdd1
2 Installation Ansible:
2.1 Connexion ssh
linux
ssh *@192.168.192.5
windows
on utilisera kitty ou putty indiquer l’adresse ip et valider la clé
2.2 installation des prérequis python3-virtualenv et sshpass
sudo apt install python3-virtualenv sshpass
2.3 création d’un user user-ansible
adduser user-ansible
2.4 se connecter sur un utilisateur
su user-ansible
2.5 créer un environnement virtualenv (mettre un nom cohérent) virtualenv ansible2.12
2.6 activer l’environnement virtuel
source ansible2.12/bin/activate
2.7 installer ansible dans l’environnement virtuel avec la version 5.2.0
pip install ansible==5.2.0
2.8 vérifier la version d’Ansible
ansible --version
3 Préparer la communication:
3.1 inventaire des nodes sur linux(à faire sur DNS mais pour le tp on le fera sur le fichier hosts)
vi /etc/hosts
127.0.0.1 localhost
127.0.1.1 nodemanager
192.168.192.10 http1
192.168.192.15 bdd1
3.2 création du fichier d’inventaire des nodes sur Ansible
vi /home/user-ansible/inventaire.ini
[apache]
http1
[db]
bdd1
[nom_du_groupe]
nom_du_node
3.3 sshpass ne gérant pas le fingerprint on effectue une première connexion ssh pour récupérer l’empreinte des nodes ssh root@bdd1 yes (quand on nous demande de valider l’empreinte)
mdp
exit
ssh root@http1
yes (quand on nous demande de valider l’empreinte)
mdp
exit
3.4 ping avec Ansible (commande Ad-Hoc (manuel, sans script))
le module debug avec l’argument msg pour transformer le mot de passe "passforce" en une chaîne chiffrée avec l’algorithme sha512. “Sceretsalt” est le sel. C’est un mot qui permet de renforcer la sécurité de l’algorithme en apportant une inconnue en plus dans le processus de cryptage du mot de passe.
3.7 créer user-ansible sur les nodes
ansible -i inventaire.ini -m user -a 'name=user-ansible password=*' --user root --ask-pass all
module user avec les arguments name et password (l’étoile doit être remplacé par la clé)
all sur tous les nodes présents dans le fichier inventaire
3.8 ajouter user-ansible dans le groupe wheel (droit sudo)
ansible -i inventaire.ini -m user -a 'name=user-ansible groups=wheel append=yes' --user root --ask-pass all
3.9 vérifier l’acquisition des droits sudo pour user-ansible (mdp a utiliser passforce)
ansible -i inventaire.ini -m user -a 'name=user-ansible groups=wheel append=yes' --user user-ansible --ask-pass --become --ask-become-pass all
3.10 créer les clés ssh (se connecter en tant que user-ansible)
ssh-keygen -t ecdsa
La passphrase est utilisée pour renforcer la connexion SSH par un mot de passe. (pour le tp nous n’en mettrons pas)
3.11 ajouter la clé publique de user-ansible sur les nodes (virtualenv)
ansible -i inventaire.ini -m authorized_key -a 'user=user-ansible state=present key="{{ lookup("file", "/home/user-ansible/.ssh/id_ecdsa.pub") }}"' --user user-ansible --ask-pass --become --ask-become-pass all
-m authorized_key : module authorized_key (ajoute ou supprime les clés SSH pour des utilisateurs)
state=present : indique d’ajouter le fichier s'il n'est pas déjà présent
key="{{ lookup("file", "/home/user-ansible/.ssh/id_ecdsa.pub") }}" : utilise la commande lookup pour rechercher le fichier concerné.
3.12 test sans --ask-pass (demande mdp ssh) (1 seul mdp (root) sera demandé)
ansible -i inventaire.ini -m authorized_key -a 'user=user-ansible state=present key="{{ lookup("file", "/home/user-ansible/.ssh/id_ecdsa.pub") }}"' --user user-ansible --become --ask-become-pass all
4 Création de l’arborescence Ansible :
4.1 créer le répertoire qui contiendra les rôles et se placer dans la répertoire mkdir roles
cd roles
4.2 utilisation de Ansible-galaxy pour créer automatiquement le rôle apache
ansible-galaxy init apache
L'arborescence contient les répertoires suivants vides :
-files : tous les fichiers à copier sur le node ;
-templates : tous les fichiers de template Jinja ;
-tasks : liste des instructions à exécuter (le fichier main.yml est obligatoire) ;
-handlers : même chose pour les instructions handlers (le fichier main.yml est obligatoire) ;
-vars : fichier contenant des déclarations de variables (le fichier main.yml est obligatoire) ; les variables définies ici sont prioritaires par rapport aux variables définies dans l'inventaire ;
-defaults : valeurs par défaut (le fichier main.yml est obligatoire) avec une priorité moindre ;
-meta : dépendances du rôle et informations (auteur, licence, plateformes...) sur le rôle (le fichier main.yml est obligatoire).
4.3 déplacement dans le dossier apache et suppression des dossiers et fichiers inutiles pour le déploiement du tp
cd apache && rm -r files meta templates vars defaults tests README.md
Seuls les répertoires handlers, meta et tasks seront conservés :
-handlers : contient les tâches à exécuter après une notification (redémarrer le service Apache)
-tasks : contient les tâches à exécuter pour installer Apache.
4.4 créer le rôle mariadb dans le dossier roles et dedans créer un fichier main.yml pour les tâches
mkdir -p mariadb/tasks/
touch mariadb/tasks/main.yml
4.5 créer un répertoire mediawiki dans roles
mkdir mediawiki
4.6 créer le rôles commun avec le dossier defaults et un fichier main.yml pour contenir les variables globales
mkdir -p mediawiki/commun/defaults/
touch mediawiki/commun/defaults/main.yml
4.7 créer le rôle confdb avec les répertoires meta et tasks puis leur créer un fichier main.yml
-un fichier tasks/main.yml contient les actions pour installer Apache, un appel à un fichier de configuration pour installer PHP et une notification pour redémarrer Apache ;
-un fichier tasks/php7-install.yml contient les actions pour installer PHP ;
-un fichier handler/main.yml contient les actions pour redémarrer le service Apache.
B Le rôle mariadb :
-un fichier tasks/main.yml contient les actions pour installer MariaDB.
C Le rôle commun de MediaWiki :
-un fichier defaults/main.yml contient les variables d'installation qui seront utilisées dans les rôles suivants.
D Le rôle confapache de MediaWiki :
-un fichier meta/main.yml contient la dépendance avec le rôle commun ;
-un fichier tasks/main.yml contient les actions pour configurer Apache pour MediaWiki.
E Le rôle confdb de MediaWiki :
-un fichier meta/main.yml contient la dépendance avec le rôle commun ;
-un fichier tasks/main.yml contient les actions pour configurer MariaDB pour MediaWiki.
Les rôles peuvent être indépendants ou dépendants les uns des autres. Par exemple, les rôles apache, mariadb et commun sont indépendants et peuvent être utilisés séparément. Par contre, les rôles confapache et confdb dépendent du rôle commun.
5 complétion des fichiers de configurations yaml
5.1.1 installation d’apache
vi roles/apache/tasks/main.yml
---
#1. Cette tâche permet d’installer Apache (httpd) à l’aide du module yum
- name: "apache installation"
yum:
name: "httpd"
state: "present"
#2. Cette tâche active le service Apache
- name: "apache service activation"
service:
name: "httpd"
state: "started"
enabled: yes
#3. Cette tâche fait appel à un autre fichier de configuration pour installer PHP. Elle est exécutée uniquement si la variable php_install est à vraie (par défaut, elle est à faux)
5.4.1 Déclarez la dépendance avec le rôle commun pour confdb
vi roles/mediawiki/confdb/meta/main.yml
dependencies:
- role: "mediawiki/commun"
5.4.2 configurer mariadb pour mediawiki
vi roles/mediawiki/confdb/tasks/main.yml
---
#1. Installation de la base de donnée Mediawiki
- name: "mediawiki database"
mysql_db:
name: "{{mediawiki_db_name}}"
state: present
login_unix_socket: /var/lib/mysql/mysql.sock
#2. Création d’un accès utilisateur et attribution des privilèges sur la base Mediawiki
- name: "mediawiki user+privileges"
mysql_user:
name: "{{mediawiki_db_user}}"
password: "{{mediawiki_db_password}}"
priv: "{{mediawiki_db_name}}.*:ALL"
host: "http1"
login_unix_socket: /var/lib/mysql/mysql.sock
state: present
5.5.1 Déclarez la dépendance avec le rôle commun pour confapache
vi roles/mediawiki/confapache/meta/main.yml
dependencies:
- role: "mediawiki/commun"
5.5.2 configurer les fichiers mediawiki dans apache
vi roles/mediawiki/confapache/tasks/main.yml
---
#1. Création du repertoire pour l’installation 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: "uncompress 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 la 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
#4. enlève la redirection localhost sur le mediawiki - name: "fix mediawiki redirection"
lineinfile:
path: "{{mediawiki_directory}}/LocalSettings.php"
regex: '\$wgServer.*'
line: '$wgServer = $_SERVER["HOST"];'
#5. Exécute la tâche avec l'utilisateur apache, se place dans le répertoire de maintenance et exécute la commande de mise à jour de la base une seule fois
- name: "mediawiki db update"
become: yes
become_user: "apache"
command:
php74 update.php --quick
args:
chdir: "{{mediawiki_maintenance_directory}}"
# La mise à jour à besoin d'être lancée une seule fois
run_once: yes
register: resultat
changed_when: "' ...done.' in resultat.stdout"
6 Assemblez les opérations avec les playbooks pour automatiser le déploiement
6.1 créer le playbook pour installer apache
vi install-apache.yml
---
- name: "Installation apache"
hosts: http1
roles:
- role: "apache"
php_install: yes
6.2 Lancer le playbook pour installer apache sur http1
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique