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
?
3 Réponses :
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.
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
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 :)