Ansible copie de clé ssh à partir d'un hôte à un autre
J'ai 2 serveurs d'application avec un loadbalancer en face d'eux et 1 serveur de base de données dans mon système. Je suis en service à l'aide de Ansible. App serveurs Nginx + Passager et en cours d'exécution pour une application Rails. Utilisera capistrano pour le déploiement, mais j'ai une question à propos de clés ssh. Mon repo git est dans un autre serveur et j'ai pour générer des clés publiques ssh sur appservers et les ajouter à la Git serveur(fichier authorized_keys). Comment puis-je faire dans ansible playbook?
PS: j'ai peut être plus de 2 app serveurs.
- Pourriez-vous élaborer sur la façon dont vous gérer les clés sur le serveur Git ? Est-ce un gitlab exemple ? Avez-vous seulement pour ajouter des clés dans un fichier authorized_keys ?
- Je n'ai qu'à ajouter des touches fichier authorized_keys
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à la authorized_key module pour obtenir des informations sur la façon de gérer vos clés publiques.
La solution la plus simple je pense, serait de générer une nouvelle paire de clés pour votre application, pour être partagée sur l'ensemble de votre application instances. Cela peut avoir des répercussions sur la sécurité (vous êtes en effet le partage de clés entre toutes les instances!), mais ça va simplifier beaucoup le processus de configuration.
Vous aurez également besoin de déploiement de l'utilisateur sur chaque application de la machine, pour être utilisé plus tard au cours du processus de déploiement. Vous aurez besoin de votre clé publique (ou jenkins, un) sur chaque déployer de l'utilisateur
authorized_keys
.Une esquisse playbook:
Cela fait l'affaire pour moi, il recueille les clés publiques ssh sur les nœuds et la distribue sur tous les nœuds. De cette façon, ils peuvent communiquer les uns avec les autres.
Info: C'est pour l'utilisateur
root
local_action: ssh-agent -L
et blogué à ce sujet: dannyman.toldme.com/2016/07/01/..., donc merci!!shell: user=root key...
au lieu deauthorized_key: user=root key...
. J'ai essayé de cet extrait, mais ne peut pas le faire fonctionne avec shell, avec authorized_key fonctionne comme un charme.ssh-add
(au lieussh-agent
) comme dans votre blog.Je voudrais créer un de déployer l'utilisateur est limité à tirer de l'accès à votre repos. Vous pouvez autoriser cette via http ou il ya quelques options pour le faire via ssh.
Si vous n'avez pas de soins sur la limitation de l'utilisateur pour un accès en lecture seule de votre pension vous pouvez alors créer une normal ssh de l'utilisateur. Une fois l'utilisateur créé, vous pouvez utiliser Ansible pour ajouter la clé publique de l'utilisateur autorisé fichier de clé sur le serveur git, vous pouvez utiliser le autorisé module clé.
Une fois que c'est de la configuration, vous avez deux options:
Si vous utilisez ssh utiliser de clé ssh transfert, de sorte que l'utilisateur qui est utilisé pour exécuter l'Ansible tâche envoie sa clé publique sur le serveur de dev.
Transférer temporairement la touche et utilisez les
ssh_opts
git option de module utilisation de déployer la clé publique de l'utilisateur.J'ai créé un paramétrée rôle de faire ssh paire de clés est générée dans une source d'utilisateur dans une source de l'hôte distant et sa clé publique copié à un utilisateur cible dans un objectif de l'hôte distant.
Vous pouvez appeler ce rôle dans une boucle imbriquée de la source et de la cible listes d'hôtes comme indiqué au bas:
Invoquant rôle dans une boucle: