5
votes

Est-il possible de dire à ansible de ne pas utiliser ~ / .ssh / config?

Mon fichier ~ / .ssh / config interfère avec ansible, j'utilise beaucoup d'abréviations pour me faciliter la vie lors de la connexion aux serveurs.

par exemple dans: p>

[servers]
te1.exmaple.com
te2.example.com

Dans mon fichier d'hôtes ansible, j'ai:

Host te*
     HostName %h.example.com
     User test

ce qui signifie que lorsque j'exécute ansible, la connexion échoue car elle échoue utilisez mon fichier de configuration ssh et essayez de vous connecter à te1.example.com.example.com.

Je sais que je pourrais modifier les hôtes ansible pour être simplement te1 et laisser ssh config ajouter le reste du domaine, mais je sais que les autres membres de mon équipe n'ont pas leur .ssh / config configuré comme moi donc ce n'est pas vraiment une option, et tbh est l'itinéraire facile qui finira par causer des problèmes pour d'autres.

Existe-t-il un moyen de lui dire de ne pas utiliser le mien ou un autre fichier .ssh / config ?


0 commentaires

3 Réponses :


2
votes

ssh -F vous permet de spécifier "un autre fichier de configuration par utilisateur".

-F fichier de configuration Spécifie un autre fichier de configuration par utilisateur. Si un fichier de configuration est donné sur la ligne de commande, le Le fichier de configuration à l'échelle du système (/ etc / ssh / ssh_config) sera ignoré. La valeur par défaut pour la configuration par utilisateur le fichier est ~ / .ssh / config.

Dans Ansible, vous pouvez le configurer en ANSIBLE_SSH_ARGS .

Par exemple dans ansible.cfg , vous pouvez le définir sur n'importe quel fichier qui correspond à vos besoins.

[ssh_connection]
ssh_args = -F ...

Vous pouvez également créer un utilisateur distinct (disons ansible-admin ) définissez son ~ / .ssh / config et utilisez-le pour exécuter ansible.


0 commentaires

3
votes

Vous pouvez utiliser le ANSIBLE_SSH_ARGS paramètre dans ansible.cfg pour cela. Le paramètre ssh requis est -F configfile qui a la signification suivante:

-F fichier de configuration

Spécifie un autre fichier de configuration par utilisateur. Si un le fichier de configuration est donné sur la ligne de commande, le le fichier de configuration (/ etc / ssh / ssh_config) sera ignoré. Le défaut pour le fichier de configuration par utilisateur est ~ / .ssh / config.

Ainsi, votre ANSIBLE_SSH_ARGS avec les valeurs par défaut dans ansible.cfg ressemblerait alors à ceci:

ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -F /dev/null


0 commentaires

1
votes

C'est ce qui a fonctionné pour moi à la fin. J'ai ajouté ceci à mon fichier ansible.cgf.

[all: vars] ansible_ssh_common_args = '-F / dev / null'

Merci à tous ceux qui ont répondu :)


0 commentaires