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