wp_update.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/usr/bin/python
  2. from ansible.module_utils.basic import AnsibleModule
  3. import subprocess
  4. def wp_cli_installed():
  5. """Vérifier si WP-CLI est installé."""
  6. try:
  7. subprocess.check_output(['wp', '--allow-root', '--info'])
  8. return True
  9. except (subprocess.CalledProcessError, FileNotFoundError):
  10. return False
  11. def update_wp_core(module):
  12. """Mettre à jour le core WordPress."""
  13. try:
  14. output = subprocess.check_output(['wp', '--allow-root', 'core', 'update', '--path=' + module.params['path']], stderr=subprocess.STDOUT)
  15. return False, output.decode()
  16. except subprocess.CalledProcessError as e:
  17. return True, e.output.decode()
  18. def update_wp_plugins(module):
  19. """Mettre à jour tous les plugins WordPress."""
  20. try:
  21. output = subprocess.check_output(['wp', '--allow-root', 'plugin', 'update', '--all', '--path=' + module.params['path']], stderr=subprocess.STDOUT)
  22. return False, output.decode()
  23. except subprocess.CalledProcessError as e:
  24. return True, e.output.decode()
  25. def main():
  26. module = AnsibleModule(
  27. argument_spec=dict(
  28. path=dict(type='str', required=True),
  29. ),
  30. supports_check_mode=True,
  31. )
  32. if not wp_cli_installed():
  33. module.fail_json(msg="WP-CLI n'est pas installé sur ce système.")
  34. if module.check_mode:
  35. module.exit_json(changed=False)
  36. failed, output_core = update_wp_core(module)
  37. if failed:
  38. module.fail_json(msg="La mise à jour du core WordPress a échoué", output=output_core)
  39. failed, output_plugins = update_wp_plugins(module)
  40. if failed:
  41. module.fail_json(msg="La mise à jour des plugins WordPress a échoué", output=output_plugins)
  42. module.exit_json(changed=True, msg="Mise à jour du core et des plugins WordPress réussie", output_core=output_core, output_plugins=output_plugins)
  43. if __name__ == '__main__':
  44. main()