Dans un projet actuel, j’ai rencontré des problèmes avec ansible se connectant via un bastion en utilisant les bonnes clés.

J’ai donc creusé. Il s’avère que par défaut, il essaie un ensemble de clés par défaut mais n’utilisait pas la bonne clé pour cet hôte (la clé n’a pas de nom standard, ce qui n’a pas aidé)

Après avoir bricolé quelque chose en utilisant le fichier de configuration ssh, j’ai cherché un moyen de corriger cela.

Dans ansible.cfg spécifiez

1
2
[ssh_connection]
ssh_args = -F ./ssh.cfg

Cela nous permet d’avoir un fichier de configuration au niveau du projet, ce qui signifie qu’il peut être commité dans le dépôt et livré avec le reste du code ansible.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# Découplage de l'identité
import identity.cfg

Host bastion
  Hostname localhost
  Port 2222
  User devops


Host *
  ControlMaster auto
  ControlPath /tmp/%h-%r
  ControlPersist 5m
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no

Notez l'import identity.cfg - cela nous aidera à permettre un changement d’identité local après avec git.

1
2
3
Match User devops
  IdentityFile ~/.ssh/id_rsa

Testons - voici un playbook pour vérifier la connectivité

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
---
- name: Accès à la cible distante et aux jumpboxes
  hosts: all
  become: false
  gather_facts: false

  tasks:

    - name: Ping simple montrant la connectivité
      ping:

...

Ressources