Un module de recherche ansible ne fonctionne pas comme prévu.
Donc j'ai trois instances L'un est le nœud de test, le deuxième noeud de contrôleur et le troisième résultant d'où je gère mon jeu de jeu ansible P>
J'essaie de générer des touches SSH sur Test_nodes, puis de rechercher les clés publiques de ces nœuds. Cela fonctionne bien. P>
Ensuite, j'essaie d'ajouter ces clés publiques dans le fichier autorisé_keys d'un hôte différent (contrôleur_node). Pour cela, j'utilise le module de recherche pour obtenir la liste des fichiers, puis bouclez sur ces fichiers dans le module Authorisé_key. P>
J'utilisais: P>
- name: Generate ssh keys hosts: media_nodes gather_facts: false tasks: - name: key generation openssh_keypair: path: ~/.ssh/id_ssh_rsa force: True register: public_key - debug: var: public_key.public_key - name: fetch public key from all nodes fetch: src: ~/.ssh/id_ssh_rsa.pub dest: ssh-keys/ - name: Controller play hosts: controller gather_facts: false tasks: - name: Find list of public key files find: paths: /home/abhilasha/ANSIBLE/ssh-keys/ file_type: file recurse: yes patterns: ".*pub" use_regex: yes register: files_matched - name: debug files matched debug: var: files_matched.files - name: Debug files_matched loop debug: var: item.path loop: "{{ files_matched.files|flatten(levels=1) }}" loop_control: label: "{{ item.path }}" - name: Set authorized key file taken from file authorized_key: key: "{{ lookup('file','item') }}" state: present with_file: - "{{ files_matched.files }}" - name: Find list of public key files This play is not working giving error TASK [Find list of public keys] ***************************************************************************************************************************************************************************************************************** ok: [test_controller] => {"changed": false, "examined": 0, "files": [], "matched": 0, "msg": "/home/abhilasha/ANSIBLE/ssh-keys/ was skipped as it does not seem to be a valid directory or it cannot be accessed\n"}
3 Réponses :
Q: "msg": "/ home / abhilasha / ansible / ssh-keys / a été ignoré car il ne semble pas être un répertoire valide ou il est impossible d'accéder à \ n" em> p>
A: Jetez un coup d'œil au répertoire keys ssh / em> sur contrôleur em> et vérifiez le contenu. Au lieu de p>
xxx pré> trouver em> dans le même chemin p>
xxx pré> il a été Fetch em> à p>
xxx pré> blockQquote>
Même si j'utilise le chemin SSH-Keys, toujours la même tâche d'erreur [Trouver une liste des clés publiques] ****************************** **************************************************** *** **************************************** * ******************************************************* ******************************************** OK: [Test_Controller ] => {"changé": faux, "examiné": 0, "Fichiers": [] ": 0," MSG ":" SSH-Keys / a été ignoré car il ne semble pas être un répertoire valide ou il est impossible d'accéder à \ n "}
Étrange. Vous ne pouvez pas voir les fichiers avec les clés publiques dans le répertoire où les clés ont été stockées?
Donc, la façon dont le fichier pub est en cours de stockage est dans ce chemin: SSH-KEYS / 10.0.0.82 / HOME / UTILISATEUR / ID_SSH_RSA.PUB Mais aussi je mettez un fichier SSH-Keys / test.pub mais je ne suis toujours pas Obtenir des fichiers
Pouvez-vous modifier les chemins comme ci-dessous et essayer
- name: Find list of public key files find: paths: /tmp/ssh-keys/ file_type: file recurse: yes patterns: ".*pub" use_regex: yes register: files_matched
Toujours avoir la même erreur "Message": "/ TMP / SSH-Keys / a été ignoré car il ne semble pas être un répertoire valide ou il est impossible d'accéder à \ n"
D'accord, j'ai eu la question, j'utilisais des hôtes: contrôleur pour cette pièce, mais les fichiers sont sur mon instance de test VM test.
Mais je ne sais pas comment résoudre encore mon problème. Je souhaite utiliser les touches de publococ sur mon local, puis appendez-le sur contrôleur Server P>
- name: Fetch public key files from localhost gather_facts: false hosts: 127.0.0.1 connection: local tasks: - name: Find list of public keys find: paths: ssh-keys/ file_type: file recurse: yes patterns: "pub" use_regex: yes hidden: yes register: files_matched - name: Debug files_matched loop debug: var: item.path loop: "{{ files_matched.files|flatten(levels=1) }}" loop_control: label: "{{ item.path }}" - name: Add Public keys to controller authorized keys hosts: controller gather_facts: false tasks: - name: Set authorized key file taken from file authorized_key: key: "{{ lookup('file','item') }}" state: present with_file: - "{{ files_matched.files }}"
Êtes-vous capable de trouver à l'aide de la commande de recherche de Linux?
Oui Trouver SSH-KEYS / -NAME "* PUB" SSH-KEYS / 10.0.0.82 / Accueil / Utilisateur / .SSH / ID_SSH_RSA.PUB SSH-KEYS / TEST.PUB.PUB
Utilisez-vous le même utilisateur via une éternelle et manuelle?
Donc, ces fichiers sont un formidateur sur mon instance VM où j'exécute le script ansible, je souhaite copier le contenu de ces fichiers à l'instance du contrôleur afin que ces fichiers soient censés être présents sur le contrôleur lui-même ou sur l'instance VM?
Pour répondre à votre question, je passe un script ansible et la commande de recherche avec les mêmes privilèges utilisateur
Le module de récupération copiera le fichier sur le serveur ansible.