#!/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()