ssh port forwarding avec Ansible

Un petit article pense-bête.

J'ai dû utiliser Ansible pour déployer une application sur une machine (appelons la application-machine) où il faut utiliser le port forwarding. Lors du déploiement de l'application, git est utilisé pour cloner l'application. Toutefois l'instance GitLab qui héberge l'application n'est pas accessible depuis application-machine. De manière manuelle, j'utiliserais la commande ssh suivante :

ssh monutilisateur@application-machine -R2222:gitlab-instance-ip:22

Il faut que la configuration ssh sur application-machine ait les réglages suivants :

Host gitlab
    Hostname 127.0.0.1
    Port 2222

Ce qui permet de git clone via :

git clone git:gitlab:path_to_project.git

Pour que ce soit possible avec Ansible il faut rajouter l'argument de port forwarding de la commande ssh dans l'inventaire utiliser pour déployer :

[application]
machine-application

[application:vars]
ansible_ssh_extra_args = "-R2222:gitlab-instance-ip:22"

Maintenant on peut accéder à l'instance via le protocole git pour cloner le projet sur la machine.