Browse Source

ajout d'un module pour update WordPress + playbook exemple

Benoit Hubert 1 year ago
parent
commit
1e8eaa9869
2 changed files with 63 additions and 0 deletions
  1. 55 0
      library/wp_update.py
  2. 8 0
      playbook-wp-update.yml

+ 55 - 0
library/wp_update.py

@@ -0,0 +1,55 @@
+#!/usr/bin/python
+
+from ansible.module_utils.basic import AnsibleModule
+import subprocess
+
+def wp_cli_installed():
+    """Vérifier si WP-CLI est installé."""
+    try:
+        subprocess.check_output(['wp', '--allow-root', '--info'])
+        return True
+    except (subprocess.CalledProcessError, FileNotFoundError):
+        return False
+
+def update_wp_core(module):
+    """Mettre à jour le core WordPress."""
+    try:
+        output = subprocess.check_output(['wp', '--allow-root', 'core', 'update', '--path=' + module.params['path']], stderr=subprocess.STDOUT)
+        return False, output.decode()
+    except subprocess.CalledProcessError as e:
+        return True, e.output.decode()
+
+def update_wp_plugins(module):
+    """Mettre à jour tous les plugins WordPress."""
+    try:
+        output = subprocess.check_output(['wp', '--allow-root', 'plugin', 'update', '--all', '--path=' + module.params['path']], stderr=subprocess.STDOUT)
+        return False, output.decode()
+    except subprocess.CalledProcessError as e:
+        return True, e.output.decode()
+
+def main():
+    module = AnsibleModule(
+        argument_spec=dict(
+            path=dict(type='str', required=True),
+        ),
+        supports_check_mode=True,
+    )
+
+    if not wp_cli_installed():
+        module.fail_json(msg="WP-CLI n'est pas installé sur ce système.")
+
+    if module.check_mode:
+        module.exit_json(changed=False)
+
+    failed, output_core = update_wp_core(module)
+    if failed:
+        module.fail_json(msg="La mise à jour du core WordPress a échoué", output=output_core)
+
+    failed, output_plugins = update_wp_plugins(module)
+    if failed:
+        module.fail_json(msg="La mise à jour des plugins WordPress a échoué", output=output_plugins)
+
+    module.exit_json(changed=True, msg="Mise à jour du core et des plugins WordPress réussie", output_core=output_core, output_plugins=output_plugins)
+
+if __name__ == '__main__':
+    main()

+ 8 - 0
playbook-wp-update.yml

@@ -0,0 +1,8 @@
+---
+- hosts: debian-113
+  become: yes
+  become_user: www-data
+  tasks:
+    - name: Mettre à jour WordPress Core et Plugins
+      wp_update:
+        path: "/var/www/wordpress"