JBoss CLi desde Ansible

JBoss CLi desde Ansible

Ejecutar comandos en JBoss Cli para modificar la configuración, agregar nueva funcionalidad, cambiar prioridades de los logs para encontrar problemas, o configurar un JBoss para una nueva aplicacion es una tarea muy facil, pero cuando se tienen varios cluster de servidores JBoss, varias instancias en un mismo servidor virtual, o crear containers de docker que se configure automaticamente para desplegar una aplicacion, la tarea con JBoss cli se vuelve un muy dificil.

Con la aparacicion de sistemas como chef y puppet esta tarea se vuelve un poco mas facil, pero ejecutar en estos entornos comandos JBoss-Cli es un poco complicado. Con la llegada de Ansible esto se volvio mas facil, el inconveniente es que hasta el momento no existe un modulo para conectarse a JBoss Cli y ejecutar comandos.
Cuando vi la necesidad de ejecutar comandos de JBoss Cli desde Ansible me di cuenta que los playbook y los comandos se volvian muy grandes y podian fallar y que era necesario crear un modulo, con esto en mente desarrolle un Modulo el cual pongo a su dispocicion para ejecutar comandos de JBoss Cli en ansible

El código lo pueden obtener desde mi repo en GitHub: https://github.com/Wolfant/ansible-jbossCli

El uso es muy facil primero debes clonar el repo, y copiar el archivo jbosscli.py en la carpeta de modulos de ansible comunmente en:

/usr/lib/python2.7/site-packages/ansible/modules/web_infrastructure

Con esto ya se puede empezar a usar el modulo desde PlayBooks o comandos simples

Ejemplo:

Para cambiar el intervalo del Deployement scaner:

- jboss:
    command: /subsystem=deployment-scanner/scanner=default:write-attribute(name=scan-interval,value=6000)
    cli_path: /home/user/wildfly-10.1.0.Final/bin

Si se tiene una clave generica para la autenticacion de JBoss CLi recomiendo configurar directamente en el codigo:


module = AnsibleModule(
argument_spec=dict(
src=dict(),
user=dict(default='USUARIO'),
password=dict(default='CONTRASEÑA'),
command=dict(),
cli_path=dict(default='/usr/share/wildfly/bin'),
server=dict(default='localhost:9990'),
verbose=dict(default="False"),
),
mutually_exclusive=[['command', 'src']],
)